Чтение файла пропускает строки в C - PullRequest
0 голосов
/ 17 апреля 2011

У меня есть файл с именем 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!

Есть идеи?

Ответы [ 2 ]

3 голосов
/ 17 апреля 2011

Вы не можете вызвать fgets() для закрытого файла.

0 голосов
/ 17 апреля 2011

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