如何解决将char数组的一部分复制到c中的字符串
| 我已经阅读了许多建议的问题,但仍然找不到答案。我知道缓冲区中的内容是一个以NULL结尾的char array
,我想将其复制到动态分配的char array
中。但是,我一直从strcpy
函数得到分割错误。谢谢你的帮助。
void myFunction()
{
char buffer[200];
// buffer was filled by recvfrom correctly,and can be printed out with printf()
char *message = malloc(200);
strcpy(message,buffer[1]);
}
////////////////
好的,所以我尝试了strcpy(message,&buffer[1]); strcpy(message,buffer);
,但没有任何效果!
解决方法
您对ѭ5的调用不正确。将其更改为以下内容:
buffer[199] = \'\\0\';
strcpy(message,&buffer[1]);
strcpy(3)
具有以下签名:
char *
stpcpy(char *s1,const char *s2);
您传入了:
char *stpcpy(char *s1,const char s2); /* won\'t work */
我建议使用memcpy(3)
而不是strcpy(3)
,因为strcpy(3)
依靠空字符来终止字符串。
, 这对我有用。您的缓冲区是否可能不是以空值结尾的?
char buffer[200];
buffer[0] = \'h\';
buffer[1] = \'e\';
buffer[2] = \'l\';
buffer[3] = \'l\';
buffer[4] = \'o\';
buffer[5] = \'\\0\';
// buffer was filled by recvfrom correctly,and can be printed out with printf()
char *message = (char *)malloc(200);
strcpy(message,buffer);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。