我有一个名为todo.txt
的文件,我有一个列出文件中每一行的函数:
void list() {
FILE *todoFile;
todoFile = fopen("./todo.txt", "r");
char line[4096];
int len;
if (todoFile != NULL) {
while (fgets(line, sizeof line, todoFile)) {
len = strlen(line);
if (len && (line[len - 1] != '\n')) {
printf("%s", line);
}
printf("%s", line);
fclose(todoFile);
}
} else {
printf("ERROR");
}
}
todo.txt
内容为:
* foo!
* hello
* FP!
但是当我使用list()
函数时,只打印第一行:
* foo!
有什么想法吗?
答案 0 :(得分:3)
您无法在已关闭的文件上致电fgets()
。
答案 1 :(得分:0)
在完成while循环中的读取后,您需要关闭文件。
void list() {
FILE *todoFile;
todoFile = fopen("./todo.txt", "r");
char line[4096];
if (todoFile != NULL) {
while (fgets(line, sizeof line, todoFile)) {
printf("%s", line);
}
fclose(todoFile);
} else {
printf("ERROR");
}
}