我正在尝试将一行中的每个整数添加到列表中。
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()是我已经编写的可以工作的方法。
我的问题是为什么我运行该程序时会将该程序杀死?以及我需要进行哪些更改来解决它?
答案 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, " ");
}
}