void writelog(text) {
f = fopen("filename");
fprint(text);
fclose(f);
}
пропадающий текст лога
В прогу для удобства отладки встроил журнал.
так вот. всё, что прога в процессе жизнедеятельности написала туда, сохраняется в файле только если его корректно закрыть вместе с прогой. ( функции обычные - fopen/fprint/fclose )
Если же случается аварийное завершение программы (ошибка в коде, или три-волшебных-кнопочки) то файл остается чистым, как будто туда ничего не записывали. Но я точно могу сказать, что функция записи хотя бы один раз, да вызывалась.
как быть? чего я не понял?
Точно не уверен, но кажется тебе надо использовать что-то типа flush - тоесть, я хочу сказать, что по моему ты не записываеш информацию на винт, а храниш ее в буфере связанном с файлом. fclose - как-раз и записывает буфер на диск, ну и чистит память буфера. надо просто использовать функцию, которая записывает буфер на диск. если не ошибаюсь это flush, но в названии неуверен, посмотри в хелпе.
Код:
Тогда все должно сохранятся в файл после вызова функции.
FAngel абсолютно прав, только функция fflush.
Короче строка
Код:
setvbuf(bfile, "", _IONBF, 0);
убирает буффер вообще.
MuHAOS, если бы дело было только за этим... До такого решения я додумывался, и к сожалению оно тормозно...
Всем спасибо.