【发布时间】:2011-05-31 22:48:46
【问题描述】:
我已经阅读了许多建议的问题,但仍然找不到答案。我知道缓冲区中的内容是以 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);,但没有任何效果!!
【问题讨论】:
-
提高编译器的警告级别并注意警告!
-
strcpy()的第二个参数也应该是一个[const] char *,即缓冲区。它目前是缓冲区的第二项,char。 -
所以应该是strcpy(message, &buffer[1])?
-
写成“strcpy(message, buffer + 1)”比较惯用
-
您的段错误现在是由不同的东西引起的。并非所有的段错误都是一样的。我更新了答案以在缓冲区中包含一个终止的空字节(最有可能导致程序崩溃的候选者)。如果您需要更多帮助或建议,请粘贴较大的 sn-p。
标签: c string segmentation-fault arrays