2010-11-29 19 views
0

私は2つのchar *を比較したいので、strcmp、 のように見てください。デバッグモードでは、strcmpのchar *は同じ値を取得していますが、それでも 文句を言わない0を返し、それが代わりにそれを入力する場合は()の条件を飛び越え:#c strcmp()は正常に動作していません

ここデバッガからPIC: 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; 
} 

それはなぜ?

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

あなたはこれを行うか、各文字列の長さを確認することができますが上がらないことを確認する:ループが内の文字を印刷するため

+0

あなたはどのような価値観を持っていますか。 –

+0

文字列は確かにASCIIの両方ですか? Cellcomのmの後のバイトが両方ともNULLであることを確かめますか? – jtdubs

+0

右ジェームス...私はそれを修正しますが、それは問題ではありません –

答えて

0

pcompanyList-> thisCompany-> pcompany一度に一つは単純に試してみてください文字列をチェックしたときにデバッガに表示されない隠し文字。

関連する問題