2010-11-29 128 views
0

我想*两个char之间进行比较,所以我做到这一点使用strcmp, 看,在调试模式下,在双方的strcmp的char *获取相同的值,但仍然是 从调试器#C的strcmp()不工作,因为它应该

这里PIC:不会返回0,并跃过如果()条件,而不是进入它的 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

你用什么值调用它。 – 2010-11-29 02:02:31

回答

0

尝试一个简单的for循环打印出的文字pcompanyList-> thisCompany-> pcompany一次一个:

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

你可以这样做或检查每个字符串的长度,以确保有AREN当您检查字符串时,不会在调试器中显示隐藏的字符。

相关问题