有人可以告訴我什麼是錯誤的strcmp?我不明白爲什麼在比較字符串和字符串數組時遇到分段錯誤。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]' – cokedude