2010-11-29 4 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 한 번에 하나의 간단한 시도 문자열을 검사 할 때 디버거에 표시되지 않는 숨겨진 문자가 없습니다.

관련 문제