Book b1, b2;

// здесь нужно заполнить структуру b1

memcpy(&b2, &b1, sizeof(Book)); // куда, откуда, сколько байт

Самый простой способ – третий. Достаточно просто написать

b2 = b1;

При этом программа скопирует одну структуру в другую «бит в бит». Зачем же рассказыватьпро остальные два способа? Только для того, чтобы понять, как это все работает, посколькунепонимание ведет к трудноуловимым ошибкам.

Массивы структур

Структуры служат для обработки большого объема информации, поэтому чаще всего в

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

Для обращения к полю структуры также используют точку, но теперь надо указать в квад-

ратных скобках еще номер нужной структуры, например

Book A[20];

...

A[12].pages = 50;

for ( i = 0; i < 20; i ++ ) // цикл по всем структурам в массива

puts(A[i].title); // вывести название книги

Если вы работаете с двоичными файлами, то чтение и запись всего массива структур выполняется в одну строчку. Покажем приемы работы с двоичным файлом на примере.

Пример.В файле books.datзаписаны структуры типа Book. Известно, что их не больше 100.

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

Поскольку по условию известно, что структур не больше 100, заранее выделяем в памяти массив на 100 структур.

Book b[100];

При чтении из файла пытаемся читать все 100 структур:

n = fread ( &b[0], sizeof(Book), 100, fp );

Чтобы определить, сколько структур было в действительности прочитано, используем значениеn, которое функция freadвозвращает в качестве результата. Вот полная программа:

#include <stdio.h>

struct Book { // объявление нового типа данных

char author[40];

char title[80];








Дата добавления: 2015-10-05; просмотров: 642;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.