Позиционирование в файле c++

161
15 декабря 2019, 02:30

Создать функцию, которая с использованием функций позиционирования в потоке изменяет содержимое файла "array.dat", переданного ей в качестве параметра. А именно, функция переставляет все нулевые элементы в начало файла. (В этот файл мы записали массив, рандомных интовых элементов).

Answer 1

Проходим по файлу с конца, удаляем все нулевые элементы. Т. е. один указатель для чтения сдвигается постоянно, а второй для записи сдвигается только если там не 0. Когда первый дойдёт до начала файла, записываем от начала до второго нолики.

Само позиционирование для типа FILE* осуществляется функцией fseek.
Для fstream надо использовать методы seekg и seekp.

А вообще, это для массива было бы хорошо, а на файле из-за позиционирования может медленно работать - возможно, надо оптимизировать, но в качестве первого приближения пойдёт.

READ ALSO
Как преобразовать UTF-8 в Кириллицу в Visual Studio 2017?

Как преобразовать UTF-8 в Кириллицу в Visual Studio 2017?

Изначально файл программы набирался в Notepad++(по умолчанию utf-8)Много разрозненного русского текста

132
создать 2 int числа из одного float

создать 2 int числа из одного float

Необходимо создать 2 числа из одного с плавающей точкойfloat 15

149
Изменение цвета кнопки при нажатии и уменьшение размера поля ввода QLineEdit при обрамлении в Qt Creator 4.8.1 C++

Изменение цвета кнопки при нажатии и уменьшение размера поля ввода QLineEdit при обрамлении в Qt Creator 4.8.1 C++

Пытаюсь написать элементарное окно авторизации (в качестве обучения) и столкнулся со следующей проблемойИмеется определенная кнопка в cpp-файле...

166