【发布时间】:2014-01-23 04:31:45
【问题描述】:
有人可以告诉我 strcmp 有什么问题吗?我不明白为什么在比较字符串数组和字符串时会出现分段错误。
我发现我的问题只是不知道如何解决它。我最终将根据我的哈希函数将 nam 放入字符串中。在我这样做之前,虽然我想检查我的字符串是否已经存在于我的字符串数组中。如果它不存在,我想将它放入数组中。如果它确实存在,我不想将它放入我的数组中。所以我猜当我在一个不存在的值上使用 strcmp 时,我得到了 null。有没有好的方法来处理这个?
char *strings[100];
char nam[100];
int g = 0;
while (fscanf(pFile, "%s %d", nam, &val) !=EOF)
{
strings[k] = nam;
printf(" string is %s .\n", strings[k]);
k++;
i = 0;
g = (int) strcmp (strings[0], nam);
printf("g is %d \n", g);
for(i = 0; i < 5; i++)
{
if(strcmp (strings[i], nam) == 0)
{
printf(" strings[i] is equal");
}
}
printf(" Bust out");
}
它也不喜欢这样。我想我在不存在的值上得到了一个空值,所以这会起作用。
for(i = 0; i < 5; i++)
{
if(strcmp (strings[i], nam) == '\0')
{
printf(" strings[i] is equal");
}
}
【问题讨论】:
-
你将每个新值读入
nam,但之前设置的所有指针也都指向nam,所以字符串都是一样的。如果您希望同时使用不同的值,则必须为每个字符串分配单独的存储空间。 -
这不是吗?
char *strings[100]