0

2 つの 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;
}

それはなぜです??

4

1 に答える 1

0

pcompanyList->thisCompany->pcompany の文字を一度に 1 つずつ出力する単純な for ループを試してください。

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

これを行うか、各文字列の長さをチェックして、文字列をチェックするときにデバッガーに表示されない隠し文字がないことを確認できます。

于 2010-11-29T02:25:55.383 に答える