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;}