2010-11-29 3 views
0

Ich möchte zwischen zwei char vergleichen * so mache ich es mit strcmp, aussehen, im Debugging-Modus, beide char * in strcmp bekommt den gleichen Wert und immer noch es wont return 0, und es springt über den if() Zustand, anstatt es zu eingeben:#c strcmp() funktioniert nicht so wie es sollte

hier pic vom Debugger: 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; 
} 

warum ist es ??

+0

Mit welchen Werten nennen Sie es? –

+0

Sind die Zeichenfolgen definitiv beide ASCII? Sind Sie sicher, dass die Bytes nach den m in Cellcom beide Nullen sind? – jtdubs

+0

richtig james ... ich werde es beheben, aber es ist nicht das Problem –

Antwort

0

ein einfaches Probieren for-Schleife in die Zeichen auszudrucken pcompanyList-> thisCompany-> pcompany einer nach dem anderen:

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

Sie können dies tun, oder die Länge der einzelnen Strings überprüfen, um sicherzustellen, dass es aren Versteckte Zeichen, die beim Überprüfen der Zeichenfolgen nicht im Debugger angezeigt werden.