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

Сохранение и загрузка данных в файл - C++

Восстановить пароль Регистрация
 
Bretbas
22 / 17 / 1
Регистрация: 05.08.2013
Сообщений: 467
Завершенные тесты: 1
27.05.2014, 23:53     Сохранение и загрузка данных в файл #1
Добрый вечер всем. Столкнулся с какой-то элементарной проблемой, и не могу никак понять в чем траблы.
Вот код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
...
int main()
{
    int k = 0;
 
    fstream f(L"Records",std :: ios :: in | std :: ios :: binary);
 
    while( (!f.eof()) && (f) )
    {
        f.read(reinterpret_cast<char*>(&k), sizeof(int));
        cout << k;
    }
 
    k++;
 
    fstream f2(L"Records",std :: ios :: out |  std :: ios :: binary);
    for(int i = 0; i < k; i++ )
        f2.write(reinterpret_cast<char*>(&k),sizeof(int));
 
    return 0;
}
...
Вначале, у меня файла не существует, поэтому в цикл while(...) мы не заходим. Прибавляем к переменной k единицу(теперь k = 1), создаем заново этот файл и записываем в цикле от 0 до k переменную k.
Теперь в файле у меня содержится цифра 1.
Заново открываем программу и видим трабл: программа заходит в цикл while(...), так как файл существует, считываем содержимое в переменную k, то есть считали единицу, которая была в файле(k = 1).
Дальше происходит очень интересный момент. По идее, в файле больше ничего нет, мы считали все до конца файла, НО программа не выходит из цикла, она опять идет читать файл!!! Что это за хрень? На экран выводится по cout << k; две единицы.

Помогите понять что это за проблема, пожалуйста)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2014, 23:53     Сохранение и загрузка данных в файл
Посмотрите здесь:

C++ загрузка массива и сохранение результата в файл
C++ Массив стуктур - загрузка/сохранение в файл
C++ Сохранение(загрузка) свойств элементов формы в файл
C++ Сохранение-Загрузка игры
Сохранение и загрузка в бинарный файл C++
C++ Работа со структурой данных, чтение/сохранение во внешний файл
C++ Загрузка и сохранение в двоичный файл
C++ Двусвязный список. Загрузка, сохранение в файл, сортировка по вводимому параметру

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.05.2014, 00:39     Сохранение и загрузка данных в файл #2
Цитата Сообщение от Bretbas Посмотреть сообщение
По идее, в файле больше ничего нет, мы считали все до конца файла,
Кроме самого, так называемого, конца файла (EOF), что и происходит на следующей итерации.

Добавлено через 3 минуты
А поэтому:
C++
1
2
    while (f.read(reinterpret_cast<char*>(&k), sizeof(int)))
        cout << k;
Bretbas
22 / 17 / 1
Регистрация: 05.08.2013
Сообщений: 467
Завершенные тесты: 1
28.05.2014, 00:52  [ТС]     Сохранение и загрузка данных в файл #3
так)завтра попробую)
Yandex
Объявления
28.05.2014, 00:52     Сохранение и загрузка данных в файл
Ответ Создать тему
Опции темы

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