strcmp приводит к false, когда строки равны
Это мой код:
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, ",");
}