Запись данных в текстовый файл с ограниченным размером в C - PullRequest
0 голосов
/ 09 июня 2009

Мне нужно записать некоторые данные системного журнала (обычно не более 100 символов за раз) в файл журнала на основе определенных событий. Но размер этого файла журнала небольшой (скажем, около 4 КБ), и мне нужно обернуться вокруг журналов, когда размер файла достигает предела. Оборачиваясь вокруг, мне нужно сохранить последнюю информацию, а затем представить ее в хронологическом порядке, как она была записана в файл. Каков наилучший способ сделать это? Я хочу избежать копирования файла для этого.

1 Ответ

7 голосов
/ 09 июня 2009

Для записи в ограниченный файл:

call ftell to find out where you are in the file
call fwrite to write as much as you can, with respect to restricted size
if you couldn't write the whole message
  call fseek to return to the start of the file
  call fwrite to write the remainder of the message

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

В качестве альтернативы, используйте существующую библиотеку журналов, например log4c .

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