Я гуглил это часами ... читал, читал и читал, и все же ничего, с чем я сталкиваюсь, кажется, не отвечает на этот простой вопрос: В программировании на C или C ++: у меня есть файл, он содержит "Привет, мир". Я хочу удалить «мир» (например, нажав Backspace в текстовом редакторе), а затем сохранить файл. Как мне это сделать?
Я знаю, что файлы streams ( отлично информация об этом здесь! ), что дКажется, у меня нет способа удалить элементы из файла, скажем так, и я изучил все функции, связанные с файлами, в stdio.h: http://www.cplusplus.com/reference/cstdio/fopen/.
Мне кажется, чтопоэтому файлы и потоки НЕ похожи на массивы: я не могу просто удалить байт из файла! Скорее (я полагаю?) Мне нужно создать целый новый файл и скопировать весь оригинальный файл в новый файл без частей, которые я хочу удалить? Это тот случай?
Единственный другой вариант, о котором я могу подумать, - это искать позицию перед «world», затем записывать двоичные нули в конец файла, перезаписывая, таким образом, «world». Проблема с этим, однако, в том, что текстовый редактор теперь больше не будет правильно отображать этот файл, так как в нем есть непечатаемые символы - и размер файла не уменьшился - он все еще содержит эти байты - это просточто теперь они содержат нули вместо текста ASCII, так что это тоже не правильно.
Related