logo
шпоры по ООП

50.Запись в бинарные файлы.

После того как файл открыт, можно читать информацию из файла или записывать информацию в файл. Рассмотрим сначала функции бинарного чтения и записи fread и fwrite. Они называются бинарными потому, что не выполняют никакого преобразования информации при вводе или выводе (с одним небольшим исключением при работе с текстовыми файлами, которое будет рассмотрено ниже): информация хранится в файле как последовательность байтов ровно в том виде, в котором она хранится в памяти компьютера.

Функция бинарной записи в файл fwrite аналогична функции чтения fread. Она имеет следующий прототип:

size_t fwrite(

char *buffer, // Массив записываемых данных

size_t elemSize, // Размер одного элемента

size_t numElems, // Число записываемых элементов

FILE *f // Указатель на структуру FILE

);

Функция возвращает число реально записанных элементов, которое может быть меньше, чем numElems, если при записи произошла ошибка - например, не хватило свободного пространства на диске. Пример использования функции fwrite:

FILE *f;

double buff[100];

size_t num;

. . .

f = fopen("tmp.res", "wb"); // Открываем файл "tmp.res"

if (f == 0) { // При ошибке открытия файла

// Напечатать сообщение об ошибке

perror("Не могу открыть файл для записи");

exit(1); // завершить работу программы с кодом 1

}

// Записываем 100 вещественных чисел в файл

res = fwrite(buff, sizeof(double), 100, f);

// В случае успеха res == 100