这是我的代码:
if(strcmp(pch,map[i].name)==0){
printf("Equal\n");
return 0;
}
pch
从文件中读取,map[i].name
已知大小为 64。这对于小于 64 的字符串非常有效。在比较大小为 63 以下的这两个字符串时:
file11111111111111111111111111111111111111111111111111111111111
和
file11111111111111111111111111111111111111111111111111111111111
一切都很好,并且预期的结果是相等的,但是当比较这两个(大小为 64)时:
file111111111111111111111111111111111111111111111111111111111111
和
file111111111111111111111111111111111111111111111111111111111111
回报是假的。我想过这样做:
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, ",");
}