#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
), один для элемента, который вы только что прочитали, и один для элемента, который вы собираетесь прочитать.