這是我的代碼: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