Добавление каждого int в строке из файла в список в C - PullRequest
0 голосов
/ 27 января 2019

Я пытаюсь добавить каждое целое число в строке в список.

char* token;
while(1){
     if (fgets(line,MAX_LEN, in)==NULL) break;
     token = strtok(line, " ");
     List L = newList();
     while(token != NULL){
            append(L, atoi(token));
     }
}

Чтение из моего In-файла работает отлично, а newList () и append () - методы, которые я уже написал для этой работы.

Мой вопрос: почему эта программа убивается при запуске?а также какие изменения я должен сделать, чтобы это исправить?

1 Ответ

0 голосов
/ 27 января 2019

Переменная 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, " ");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...