Есть много похожих вопросов, но после долгих поисков в Google нет ничего, что могло бы дать конкретный ответ. Вот так:
Допустим, у нас есть файл (может быть двоичным, и гораздо больше):
abcdefghijklmnopqrztuvwxyz
как лучше всего в C "переместить" правую часть этого файла влево , усекая начало файла ... так, например, "усечение спереди" 7 байтов изменит файл на диске на:
hijklmnopqrztuvwxyz
Я должен избегать временных файлов и предпочел бы не использовать большие буфер для чтения всего файла в память. Один из возможных методов, о котором я подумал, - это использовать команду fopen с флагом «rb +» и постоянно переключаться между чтением и записью, чтобы скопировать байты, начиная со смещения в начало, а затем установитьEndOfFile для усечения в конце. Похоже, поиск требует много (возможно, неэффективно).
Другой способ - открыть один и тот же файл дважды и использовать fgetc и fputc с соответствующими указателями файлов. Возможно ли это вообще?
Если есть другие способы, я бы с удовольствием прочитал их все.