Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

пропадающий текст лога

1.9K
12 января 2008 года
0xf001
96 / / 24.05.2005
Пишу на С++.
В прогу для удобства отладки встроил журнал.
так вот. всё, что прога в процессе жизнедеятельности написала туда, сохраняется в файле только если его корректно закрыть вместе с прогой. ( функции обычные - fopen/fprint/fclose )

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

как быть? чего я не понял?
10K
12 января 2008 года
FAngel
77 / / 13.09.2006
Точно не уверен, но кажется тебе надо использовать что-то типа flush - тоесть, я хочу сказать, что по моему ты не записываеш информацию на винт, а храниш ее в буфере связанном с файлом. fclose - как-раз и записывает буфер на диск, ну и чистит память буфера. надо просто использовать функцию, которая записывает буфер на диск. если не ошибаюсь это flush, но в названии неуверен, посмотри в хелпе.
12K
12 января 2008 года
MuHAOS
63 / / 06.12.2006
А ты функцию записи на диск сделай вот в таком стиле:

 
Код:
void writelog(text) {
  f = fopen("filename");
  fprint(text);
  fclose(f);
}


Тогда все должно сохранятся в файл после вызова функции.
505
12 января 2008 года
vAC
343 / / 28.02.2006
FAngel абсолютно прав, только функция fflush.
1.9K
13 января 2008 года
0xf001
96 / / 24.05.2005
Ай йа дурак... у меня же мсдн 1 гиг...
Короче строка
 
Код:
setvbuf(bfile, "", _IONBF, 0);

убирает буффер вообще.

MuHAOS, если бы дело было только за этим... До такого решения я додумывался, и к сожалению оно тормозно...

Всем спасибо.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог