Попытка чтения в обратном направлении из двоичного файла

#c #file #while-loop #binary

#c #файл #цикл while #двоичный

Вопрос:

У меня есть двоичный файл с сохраненными в нем целыми числами 1,2,3,4,5,6,7,8,9,10. Я пытаюсь начать чтение файла с 10, затем двигаться назад, пока не дойду до 1. Это то, что у меня есть

 int count = 1;
    file.seekg(-sizeof(int) * count, ios::cur);
    while (file.read((char*)amp;z, sizeof(int))) {
        cout << z << " ";
        count  ;
        file.seekg(-sizeof(int) * count, ios::cur);
    }
    cout << endl;
  

Вывод дает мне только 10,9,7,4. Почему это так?

Ответ №1:

Вам нужно использовать ios::end в seekg вызовах или всегда перемещаться назад на размер двух элементов ( -2 * sizeof(int) , не скорректированный count ), один для элемента, который вы только что прочитали, и один для элемента, который вы собираетесь прочитать.