【发布时间】:2014-12-01 21:43:51
【问题描述】:
根据 DDD,我从 strcpy 中得到了一个段错误,但我不能完全弄清楚我做错了什么(对 C 来说仍然很新)。任何帮助将不胜感激,在此先感谢。
int compare_people(PERSON* first, PERSON* second)
{
char firstName[32];
char secondName[32];
strcpy(firstName, first->name);
strcpy(secondName, second->name);
int returnVal = strcmp(firstName, secondName);
return returnVal;
}
【问题讨论】:
-
如果任一名称超过 31 个字符,它将写入无效内存,因为您创建的缓冲区只有那么大。
-
名字平均只有5-10个字符
-
我猜
first或second是NULL。使用调试器。 -
需要向我们展示调用代码,以便我们知道
first和second是什么。其次当然是为什么要打扰strcpy电话。为什么不在PERSON.name字段上使用strcmp? -
好的,你确定 first 和 second 总是非空的,并且它们的名字都是非空的吗?
标签: c segmentation-fault strcpy