对比C语言中memccpy()函数和memcpy()函数的用法
C语言memccpy()函数:复制内存中的内容 #include <string.h> 定义函数: void * memccpy(void *dest,const void * src,int c,size_t n); 函数说明:memccpy()用来拷贝src 所指的内存内容前n 个字节到dest 所指的地址上。与memcpy()不同的是,memccpy()会在复制时检查参数c 是否出现,若是则返回dest 中值为c 的下一个字节地址。 返回值:返回指向dest 中值为c 的下一个字节指针。返回值为0 表示在src 所指内存前n 个字节中没有值为c的字节。 范例 #include <string.h> main(){ char a[] = "string[a]"; char b[] = "string(b)"; memccpy(a,b,'B',sizeof(b)); printf("memccpy():%sn",a); } 执行结果: memccpy():string(b) C语言memcpy()函数:复制内存内容(忽略 ) #include <string.h> memcpy() 用来复制内存,其原型为: void * memcpy ( void * dest,size_t num ); memcpy() 会复制 src 所指的内存内容的前 num 个字节到 dest 所指的内存地址上。 memcpy() 并不关心被复制的数据类型,只是逐字节地进行复制,这给函数的使用带来了很大的灵活性,可以面向任何数据类型进行复制。 需要注意的是: 与 strcpy() 不同的是,memcpy() 会完整的复制 num 个字节,不会因为遇到“ ”而结束。 【返回值】返回指向 dest 的指针。注意返回的指针类型是 void,使用时一般要进行强制类型转换。
#include <stdio.h> #include <stdlib.h> #include <string.h> #define N (10) int main() { char* p1 = "abcde"; char* p2 = (char*)malloc(sizeof(char) * N); char* p3 = (char*)memcpy(p2,p1,N); printf("p2 = %snp3 = %sn",p2,p3); free(p2); p2 = NULL; p3 = NULL; system("pause"); return 0; } 运行结果: p2 = abcde p3 = abcde 代码说明: 2) 指针p3通过函数memcpy直接指向了指针p2所指向的内存,也就是说指针p2、p3指向了同一块内存。然后打印p2,p3指向的内存值,结果是相同的。 3) 最后按照好的习惯释放p2,并把p3也置为NULL是为了防止再次访问p3指向的内存,导致野指针的发生。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |