LINUX.ORG.RU

Запись и чтение массива типа unsigned char в/из файл(а)

 


0

2

У меня имеется массив

#define BUF_SIZE 4096
static unsigned char my_buffer[BUF_SIZE];

Запись данных различного типа (!), т.е. int, long int, float, double, в данный массив я произвожу используя функцию. Т.е. для каждого данного я знаю смещение (some_offset) и знаю его порядок следования.

...
memcpy(&my_buffer[some_offset], some_value_ptr, size);
...

Теперь я хочу сохранить данный массив в файл (т.е. полностью записать my_buffer в файл), ну и в какой-то определённый момент прочитать (т.е. восстановить из файла my_buffer). С тем же порядком и смщением.

Каким образом мне лучше хранить это в файле, как записывать и считывать. Можно какой-нибудь простой пример? И как я могу выборочно записать некоторый offset + size. Т.е. для определённого типа данных?



Последнее исправление: dnlfinder (всего исправлений: 1)

Ответ на: комментарий от MKuznetsov

хорошая идея... спасибо - подумаю над ней

dnlfinder
() автор топика
Ответ на: комментарий от vega

это да... но кроссплатформенность в данном случае не нужна

dnlfinder
() автор топика

Мелкими кусками лучше не писать на носители.

rimsleur
()

Для определенного типа данных можно использовать fread и fwrite

rimsleur
()
Ответ на: комментарий от Sorcerer

а может лучше не надо? На старых 32-битных платформах примапив пару гигабайт можно словить кучу лулзов.

anonymous
()
Ответ на: комментарий от anonymous

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

Sorcerer ★★★★★
()

ну если у тебя массив в 4..400К, то не парься, и читай/пиши этот массив целиком. если больше - mmap в помощь. если совсем много, то можно юзать fseek(), передвигая указатель в нужное место файла.

drBatty ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.