读书人

memcpy有关问题

发布时间: 2012-10-14 14:55:07 作者: rapoo

memcpy问题
char* a="1234";
char* b="143";
memcpy(a,b,sizeof(b));
为啥会出错?貌似用strcpy也会出错!

[解决办法]
b是一个指针类型,sizeof是用来求长度,你sizeof(b)得出的是指针类型的长度,不管是什么类型的长度,一般在32位的平台上得到的长度都是4,正确的求长度应该是sizeof(char)
[解决办法]
常量指针不可修改
[解决办法]
a指向的区域为全局的常量区,只读!
[解决办法]
1、a被定义为了常量指针,不能修改其中的内容;
2、b的长度应该用strlen来计算,sizeof只是指针的大小。
可以这样改:

C/C++ code
char a[5]="1234";char* b="143";memcpy(a,b,strlen(b));
[解决办法]
C/C++ code
char a[]="1234";char* b="143";memcpy(a,b,sizeof(b));
[解决办法]
原型:extern void *memcpy(void *dest, void *src, unsigned int count);
用法:#include <string.h>
功能:由src所指内存区域复制count个字节到dest所指内存区域。
说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针。
[解决办法]
a指向一个常量,内容不可修改。
[解决办法]
char* a="1234"; 和char a[] = "1234";定义方法完全不一样,后面那个是可以修改的,前面那个不行。前面的a指向一个常量区域,不能修改。。

读书人网 >C语言

热点推荐