2013-04-10 4 views
1

Я работаю над обработкой sever/client. Я хочу сохранить информацию обо всех активных клиентах в текстовом файле с именем «Information.txt». Я обновляю этот текстовый файл каждые 3 месяца. Поэтому я хочу, чтобы текстовый файл очищал все содержимое через каждые 3 секунды без удаления файла. Есть ли способ сделать это? :( я не хочу использовать freopen().Очистить содержимое текстового файла

+1

использовать 'fopen' вместо этого нормально? –

+0

Да, использование fopen не проблема :) Я просто не хочу использовать freopen(). – Ayse

+1

закрыть и открыть с помощью «w». скорее «w +» –

ответ

1

Попробуйте с

FOPEN (имя файла, флаг)

Откройте файл с флагом = "W" или «Всемирный банк », и он будет очищен

+0

Рад! Принял меня целый день, чтобы искать вещи через Интернет, и вы решили проблему через несколько минут. Большое вам спасибо :) – Ayse

+0

, но теперь, если я открываю файл с флагом «w», я не могу прочитать данные из этого файла в буфер. :(что может быть причиной? :( – Ayse

+1

он очистит все данные при его открытии. прочитайте http://pubs.opengroup.org/onlinepubs/009695399/functions/fopen.html –

3

Проблема с периодической очисткой файла заключается в том, что если ваш процесс выходит из строя после того, как файл был очищен, но до того, как он был записан, вы потеряете данные: старые данные исчезли, но новые данные еще нет.

Общим подходом к этой проблеме является создание нового файла, его запись, а затем перемещение нового файла для замены старого. Таким образом, у вас всегда есть файл, а иногда (в течение очень коротких периодов времени) у вас есть два файла.

1

Просто откройте файл с fopen и установив флаг в ж или ш + или WB

От fopen man page

ш

усечь файл до нулевой длины или создать текстовый файл для записи. Поток расположен в начале файла.

ш +

Открыть для чтения и записи. Файл создается, если он не существует, в противном случае он усекается. Поток расположен в начале файла .

Смежные вопросы