c库函数memccpy实现

来源:互联网 发布:知乎 东海防空识别区 编辑:程序博客网 时间:2024/05/21 12:40
/**copyright@nciaebupt 转载请注明出处*c标准库中的函数memccpy*原型:extern void *memccpy(void *dest, void *src, unsigned char ch, unsigned int count);*用法:#include <string.h>*功能:由src所指内存区域复制不多于count个字节到dest所指内存区域,如果遇到字符ch则停止复制。*说明:返回指向字符ch后的第一个字符的指针,如果src前n个字节中不存在ch则返回NULL。ch被复制。*使用C函数库中的memccpy*/#include <cstdio>#include <cstring>int main(int args,char ** argv){    char *s="Golden Global View";    char d[20],*p;    p = (char *)memccpy(d,s,'e',strlen(s));    if(p)    {        *p='\0';      //给d添加一个结束符\0        printf("Char found: %s\n",d);    }    else        printf("Char not found.\n");    getchar();    return 0;}/**copyright@nciaebupt 转载请注明出处*c标准库中的函数memccpy*原型:extern void *memccpy(void * dest,const void * src,int c,unsigned count);*用法:#include <string.h>*功能:由src所指内存区域复制不多于count个字节到dest所指内存区域,如果遇到字符ch则停止复制。*说明:返回指向字符ch后的第一个字符的指针,如果src前n个字节中不存在ch则返回NULL。ch被复制。*自己重写memccpy*/#include <cstdio>#include <cstring>void * _memccpy(void * dest, const void * src, int c,unsigned count){    while(count && (*((char *)(dest = (char *)dest + 1) - 1) =                    *((char *)(src = (char *)src + 1) -1)) != (char)c)    {        count--;    }    return (count ? dest : NULL);}int main(int args,char ** argv){    char * src = "Golden Global View";    char dest[20],*p;    p = (char *)memccpy(dest,src,'d',strlen(src));    if(p)    {        *p = '\0';        printf("Char found: %s\n",dest);    }    else    {        printf("Char not found.\n");    }    getchar();    return 0;}

原创粉丝点击