#c strcmp()无法正常工作

时间:2010-11-29 01:58:44

标签: strcmp

我想比较两个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;
}

为什么?

1 个答案:

答案 0 :(得分:0)

尝试使用简单的for循环打印出pcompanyList-> thisCompany->中的字符:pcompany one:

for (int x = 0; x < strlen(pcompanyList->thisCompany->pcompany); x++)
    printf("%c ", pcompanyList->thisCompany->pcompany[x]);

您可以执行此操作或检查每个字符串的长度,以确保在检查字符串时没有显示在调试器中的隐藏字符。