【发布时间】:2010-11-29 01:58:44
【问题描述】:
我想在两个 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;
}
为什么会这样??
【问题讨论】:
-
你用什么值来称呼它。
-
字符串肯定都是ASCII吗?您确定 Cellcom 中 m 之后的字节都是空的吗?
-
正确的詹姆斯...我会解决它,但这不是问题
-
jtdubs - 也许不是,但我用这些字符的值添加了调试图片*...
-
您是否尝试过将 pcompany 和 psearchWord 都打印出来,并打印出每个字母的字节码版本以确保它们相同。 strcmp 已经存在很长时间了,我怀疑这段代码中存在一些错误。
标签: strcmp