这是我的代码:STRCMP结果时字符串相等
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, ",");
}
它是char * pch。请查看我的编辑 – Tom
@Tom“map [i] .name已知大小为64”,所以他的观点仍然存在。 – xiaoyi
@Tom你不能把64字符长度的字符串放在64长度的字符数组中。 – xiaoyi