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]);
あなたはこれを行うか、各文字列の長さを確認することができますが上がらないことを確認する:ループが内の文字を印刷するため
あなたはどのような価値観を持っていますか。 –
文字列は確かにASCIIの両方ですか? Cellcomのmの後のバイトが両方ともNULLであることを確かめますか? – jtdubs
右ジェームス...私はそれを修正しますが、それは問題ではありません –