Форум программистов, компьютерный форум CyberForum.ru

При загрузке списка из файла дублируется последняя строка - C++

Восстановить пароль Регистрация
 
Dream_O
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 35
01.05.2014, 18:12     При загрузке списка из файла дублируется последняя строка #1
Здравствуйте! Такая проблема:
Выгружаю список в файл. С процедурой выгрузки проблем нет. Всё сохраняет корректно. Но при загрузке списка из файла, последняя строка загружается 2 раза. Ошибку в коде найти не удается:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
void load(T_Queue &queue)
{
    FILE *fp;
    T_Book_Queue *p;
    T_Book book;
 
    fp = fopen("base1.dat", "rb");
    if (fp == NULL) {
        perror("Невозможно прочитать файл");
        return;
    }
 
    printf("Загрузка списка... \n");
    while (!feof(fp)) {                        
       fread(&book, sizeof(book), 1, fp);        
       p = (T_Book_Queue*)malloc(sizeof(T_Book_Queue));
       p->book = book;
       p->next = NULL;        
       if (queue.head != NULL) 
           queue.tail->next = p;
       else
           queue.head = p;
       queue.tail = p;
    }
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.05.2014, 18:12     При загрузке списка из файла дублируется последняя строка
Посмотрите здесь:

C++ Дана квадратная таблица a[1:n,1:n]. Переставить местами строки 1 и 2, 3 и 4 и т.д. Если n нечетно, то последняя строка остается на месте.
C++ Программа зависает при загрузке файла
C++ при вводе из файла проверить следующая строка пустая или нет
Не находит символа при загрузке с файла C++
C++ Работаю с файлом *.txt. Прога ведет себя странно если последняя строка файла пуста. Почему так?
При составлении палиндрома последняя буква переходит на 1 место C++
При загрузке из файла дублируется запись C++
C++ Ошибка при загрузке фото - нарушение прав доступа при чтении по адресу 0x00814000

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IrineK
Заблокирован
01.05.2014, 18:30     При загрузке списка из файла дублируется последняя строка #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Заменим:
C++
1
2
3
while (!feof(fp)) {                        
       fread(&book, sizeof(book), 1, fp);
//...
На:
C++
1
2
3
while ( fread(&book, sizeof(book), 1, fp) == 1) {                        
       if (feof(fp)) break;
//....
Dream_O
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 35
01.05.2014, 18:37  [ТС]     При загрузке списка из файла дублируется последняя строка #3
IrineK, и снова огромное вам спасибо! Всё получилось!
Yandex
Объявления
01.05.2014, 18:37     При загрузке списка из файла дублируется последняя строка
Ответ Создать тему
Опции темы

Текущее время: 17:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru