首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >关于将字符数组复制到字符指针的基本C问题

关于将字符数组复制到字符指针的基本C问题
EN

Stack Overflow用户
提问于 2011-04-12 17:04:26
回答 6查看 7.9K关注 0票数 2

我对基本的C编程有一些疑问。

我有一个char数组,我必须将它复制到char指针。因此,我做了以下工作:

代码语言:javascript
运行
复制
char a[] = {0x3f, 0x4d};
char *p = a;     
printf("a = %s\n",a);
printf("p = %s\n",p);
unsigned char str[] = {0x3b, 0x4b};
unsigned char *pstr =str;
memcpy(pstr, str, sizeof str);
printf("str = %s\n",str);
printf("pstr = %s\n",pstr);

我的pstr和str的printf语句被附加了数据"a“。如果我删除memcpy,我会得到垃圾。一些C大师能给我一些启发吗?

EN

Stack Overflow用户

发布于 2018-02-28 07:20:30

同意。您必须在字符数组的末尾添加一个空字节。

代码语言:javascript
运行
复制
char a[] = {0x3f, 0x4d, '\0'};

原因是您正在创建一个字符串,而没有声明它的实际结束位置。您的memcpy()函数将*str复制到*pstr,并自动为您添加一个空字节,这就是它工作的原因。

如果没有memcpy(),字符串永远不知道何时结束,所以它会到达后续的内存地址,并返回存储在那里的任何随机值。当你用字符创建一个字符串时,一定要记住以空字节结尾。

票数 -1
EN
查看全部 6 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5632773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档