Переменная token
не изменяется после строки
token = strtok(line, " ");
Таким образом, цикл выполняется до тех пор, пока система не возражает против добавления другого элемента.Вы должны продолжать вызывать strtok
в цикле, например:
while(token != NULL){
append(L, atoi(token));
token = strtok(NULL, " ");
}
Обратите внимание, что List L
не будет доступен после завершения внешнего цикла, поэтому его следует переместить за пределы.Я предлагаю это более идиоматическое решение:
List L = newList();
while(fgets(line, MAX_LEN, in) != NULL) {
char *token = strtok(line, " ");
while(token != NULL){
append(L, atoi(token));
token = strtok(NULL, " ");
}
}