/*
*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;
}
c库函数memccpy实现
最新推荐文章于 2024-03-24 19:14:51 发布