Очистка содержимого файла в C ++, зная только ФАЙЛ * - PullRequest
2 голосов
/ 16 июля 2010

Можно ли очистить содержимое (т. Е. Установить EOF на начало / сброс файла) в C ++, зная только FILE *?Я пишу во временный файл с доступом wb + и хочу иногда очищать его и обрезать без добавления вызовов fclose и fopen.Я не думаю, что это возможно ... но если нет, то почему бы и нет?

Заранее спасибо!

Ответы [ 3 ]

7 голосов
/ 16 июля 2010

Это будет зависеть от вашей платформы.Стандарт POSIX предоставляет ftruncate(), для которого требуется дескриптор файла, а не указатель FILE, но также предоставляется fileno() для получения дескриптора файла из FILEуказатель.

Аналогичные средства будут доступны в Windows средах - но под разными именами.

0 голосов
/ 16 июля 2010
#include <cstdio>

freopen(null, "w", filePtr);

см. http://www.cplusplus.com/reference/clibrary/cstdio/freopen/ для получения дополнительной информации. особенно описание для параметра имя файла.

0 голосов
/ 16 июля 2010

Я не верю, что это можно сделать, используя FILE*.Вы всегда можете записать нулевые данные через конец файла, но это не обрезает его.

В качестве альтернативы, если у вас есть доступ к имени файла (я не могу сказать из вопроса), вы можете использовать freopenкоторый скрывает закрытие / открытие / усечение в одном вызове функции.

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