Я пытаюсь прочитать данные из файла, разбить их на токены и отсортировать, однако strtok
работает некорректно при запуске, иногда это работает, иногда нет, и я получаю очень короткие / нечетные токены.
Кажется, что Valgrind думает, что это потому, что strtok полагается на неинициализированное значение (я думаю):
==7069== Conditional jump or move depends on uninitialised value(s)
==7069== at 0x40B61A3: strtok (strtok.S:160)
==7069== by 0x8048842: main (main.c:58)
Вот функция, которую, я думаю, обвиняет Вальгринд:
char * getNextToken(char * line) {
char delim = ',';
return strtok(line, &delim);
}
Может ли это быть из-за того, что для большинства моих звонков линия NULL
равна strtok
?
Вот мои вызовы функции:
strcpy(performer, getNextToken(inputLine));
strcpy(title, getNextToken(NULL));
strcpy(charMin, getNextToken(NULL));
/*etc...*/
Я понятия не имею, что может быть причиной этого, и все значения, которые я даю strtok
, - это то, что я ожидаю. Кроме того, я иногда получаю сообщение об ошибке стека, не знаю почему.