我想比较两个char *所以我用strcmp做, 看,在调试模式下,strcmp中的char *都得到相同的值,但仍然如此 不会返回0,它跳过if()条件而不是输入它:
这里来自调试器的图片: http://img405.imageshack.us/img405/5218/111fi.jpg
Company FindCompany(CompanyL pcompanyList, int companyIdentityDigit)
{
Company companyFound;
char *psearchWord;
psearchWord = (char*)malloc(10*sizeof(char));
switch(companyIdentityDigit) {
case 0:
strcpy(psearchWord , "Pelephone");
break;
case 2:
strcpy(psearchWord , "Cellcom");
break;
case 4:
strcpy(psearchWord , "Orange");
break;
}
while(pcompanyList->next != NULL) {
if(strcmp(pcompanyList->thisCompany->pcompany , psearchWord) == 0) {
free(psearchWord);
return pcompanyList->thisCompany;
}
pcompanyList = pcompanyList->next;
}
free(psearchWord);
return NULL;
}
为什么?
答案 0 :(得分:0)
尝试使用简单的for循环打印出pcompanyList-> thisCompany->中的字符:pcompany one:
for (int x = 0; x < strlen(pcompanyList->thisCompany->pcompany); x++)
printf("%c ", pcompanyList->thisCompany->pcompany[x]);
您可以执行此操作或检查每个字符串的长度,以确保在检查字符串时没有显示在调试器中的隐藏字符。