Удалить символ из файла в C - PullRequest
0 голосов
/ 21 ноября 2010

Как я могу удалить несколько символов из файла с помощью программы на C?

Я не смог найти для него никаких предопределенных функций.

Чтобы понять цель, я пытаюсь отправить файл через сокет, если N байтов отправлено успешно, я хочу удалить эти байты из файла. В конце файл будет пустым. Есть ли другой способ сделать это эффективно?

Спасибо Прадип

Ответы [ 5 ]

3 голосов
/ 21 ноября 2010

Если они в конце, обрежьте файл до нужной длины.Если это не так, вам нужно переписать файл.

1 голос
/ 21 ноября 2010

вы должны использовать индекс, который указывает на начало данных, которые вы еще не отправили.Не нужно удалять то, что вы отправили, просто передайте их, когда вы отправляете весь файл, удалите его.

1 голос
/ 21 ноября 2010

Нет простого способа удалить байты из начала файла. Вам придется начать с того места, где вы хотите обрезать файл, и читать оттуда до конца файла, записывая в начало файла.

Возможно, имеет смысл просто отслеживать, сколько байтов вы уже записали в файл в каком-то другом файле.

1 голос
/ 21 ноября 2010

Ваш способ довольно неэффективен для больших файлов, так как вам придется скопировать «остальную часть файла» на несколько байт дальше к началу, что стоит дорого. Я бы предпочел записать «текущую позицию отправки» где-нибудь за пределами файла и обновить эту информацию. Таким образом, вам не придется копировать остальную часть файла так часто.

0 голосов
/ 21 ноября 2010

Если символы расположены один за другим, почему бы вам не попробовать fseek ();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...