Как лучше всего обрезать начало файла в C?

Есть много похожих вопросов, но после долгих поисков в Google нет ничего, что могло бы дать конкретный ответ. Вот так:

Допустим, у нас есть файл (может быть двоичным, и гораздо больше):

abcdefghijklmnopqrztuvwxyz

как лучше всего в C "переместить" правую часть этого файла влево , усекая начало файла ... так, например, "усечение спереди" 7 байтов изменит файл на диске на:

hijklmnopqrztuvwxyz

Я должен избегать временных файлов и предпочел бы не использовать большие буфер для чтения всего файла в память. Один из возможных методов, о котором я подумал, - это использовать команду fopen с флагом «rb +» и постоянно переключаться между чтением и записью, чтобы скопировать байты, начиная со смещения в начало, а затем установитьEndOfFile для усечения в конце. Похоже, поиск требует много (возможно, неэффективно).

Другой способ - открыть один и тот же файл дважды и использовать fgetc и fputc с соответствующими указателями файлов. Возможно ли это вообще?

Если есть другие способы, я бы с удовольствием прочитал их все.

6
задан snapfractalpop 9 December 2011 в 23:33
поделиться