将一行中的每个int从文件添加到C中的列表

时间:2019-01-27 19:07:21

标签: c

我正在尝试将一行中的每个整数添加到列表中。

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 :(得分:0)

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