これは私のコードです:
if(strcmp(pch,map[i].name)==0){
printf("Equal\n");
return 0;
}
pch
ファイルから読み取られ、map[i].name
既知のサイズは 64 です。これは、64 より小さい文字列に最適です。サイズが 63 未満のこれら 2 つの文字列を比較すると、次のようになります。
file11111111111111111111111111111111111111111111111111111111111
と
file11111111111111111111111111111111111111111111111111111111111
すべてが桃色で、期待どおりの結果は同じですが、これら 2 つ (サイズ 64) を比較すると、次のようになります。
file111111111111111111111111111111111111111111111111111111111111
と
file111111111111111111111111111111111111111111111111111111111111
戻り値は false です。私はやろうと思った:
if(strncmp(pch,map[i].name,64)==0){
printf("Equal\n");
return 0;
}
正確なサイズが 64 の文字列では機能しますが、それよりも小さい文字列の場合、結果はランダムになります。ここで私はどのような奇抜さを扱っていますか?
編集:これは完全なコードです:
char * pch;
char tempFilesNeeded[100*64+100];
strcpy(tempFilesNeeded,map[i].filesNeeded);
pch = strtok(tempFilesNeeded,",");
while (pch != NULL)
{
if(strcmp(pch,map[i].name)==0){
printf("Equal\n");
return 0;
}
pch = strtok (NULL, ",");
}