Fclose ( fp );
Можно было также вместо sizeof(Book)написать sizeof(b), поскольку запись b– это
как раз один экземпляр структуры Book. Функция freadвозвращает число удачно прочитанных элементов (в нашем случае – структур). Поэтому если в примере переменная nравно нулю,чтение закончилось неудачно и надо вывести сообщение об ошибке.
Для записи структуры в двоичный файл используют функцию fwrite. Ее параметры – те
же, что и у fread. Пример ниже показывает добавление структуры в конец двоичного файла
books.dat.
Book b;
FILE *fp;
// здесь надо заполнить структуру
fp = fopen("books.dat ", "ab");
fwrite(&b, sizeof(Book), 1, fp);
Fclose ( fp );
Копирование
Пример.Пусть в памяти выделено две структуры одного типа и в одну из них записаны какие-то данные. Требуется скопировать все данные из первой структуры во вторую.
Пусть структуры имеют тип Bookи называются b1и b2. Существуют три способа решения этой задачи. Самый сложный – копирование каждого поля отдельно:
Book b1, b2;
// здесь заполняем структуру b1
Strcpy ( b2.author, b1.author );
Strcpy ( b2.title, b1.title );
b2.year = b1.year;
b2.pages = b1.pages;
Можно использовать специальную функцию memcpy, которая умеет копировать блоки памяти.Для ее использования надо подключить к программе заголовочный файл mem.h.
#include <mem.h>
Дата добавления: 2015-10-05; просмотров: 763;