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, ",");
    }

Ответы на вопрос(2)

Ваш ответ на вопрос