Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Язык Си. Лабораторные работы / Справочник. Часть 2 (СПбГУТ).doc
Скачиваний:
54
Добавлен:
10.09.2019
Размер:
801.79 Кб
Скачать

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

Это часто используемая на практике структура данных.

1.39.6.1. Объявление массивов структур

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

<α> <>[<γ>];

Здесь α – имя типа элементов,  – имя массива, γ – размер массива.

Приведем пример.

#define MLEN 81 #define MSIZE 20 struct person_salary

{

char fio[MLEN];

double salary;

};

struct person_salary ar[MSIZE]; // … }

Здесь объявлен массив структур. В массиве можно хранить до 20 структур, имеющих тип struct person_salary.

1.39.6.2. Идентификация элементов массива структур

Для идентификации элементов массива структур следует вначале с помощью оператора [] получить доступ к элементу массива, а затем, используя оператор “.”, можно обратиться к полю структуры. Дальнейшие действия зависят от типа поля.

Пример.

Пусть имеется массив, объявленный следующим образом.

#define MLEN 81 #define MSIZE 20 struct person_salary { char fio[MLEN]; double salary; }; struct person_salary arr[MSIZE];

Рассмотрим выражения, приведенные в таблице.

Выражение

Пояснение

arr[0].salary

Обращение к полю salary 1-ой структуры в массиве arr

arr[1].fio

Обращение к полю fio 2-ой структуры в массиве arr

arr[1].fio[2]

Обращение к 3-му символу поля fio 2-ой структуры в массиве arr

1.40. Работа с внешними устройствами

Язык Си не определяет операции ввода-вывода. Такие операции выполняются с помощью библиотечных или пользовательских функций. Различают две категории библиотечных функций: потоковые и низкоуровневые.

Потоковые функции нашли более широкое применение на практике. Это связано с тем, что потоковые функции были включены в стандартную библиотеку языка Си. Ограничимся рассмотрением потоковых функций.

1.40.1. Понятие потока

Поток – это своего рода обобщенное устройство ввода-вывода. Такое понятие введено в рассмотрение для того, чтобы при программировании операций ввода-вывода можно было не учитывать особенности:

• конкретного типа внешнего устройства,

• среды, в которой выполняется программа.

Все потоки ведут себя похожим образом. Работа их не зависит от типа физического устройства. Различают потоки двух видов: текстовые и двоичные.

Текстовый поток – это последовательность символов, организованная в строки. Каждая строка такого потока со стороны компьютера должна заканчиваться символом новая строка ‘\n’. В конце последней строки такой символ не является обязательным.

Двоичный поток – это последовательность байтов, которая взаимно однозначно соответствует байтам на внешнем устройстве. При этом никаких преобразований символов не происходит, и нет символов, играющих особую роль. Количество символов, которые записываются (читаются), и тех символов, которые находятся на внешнем устройстве одинаково.

1.40.2. Файлы

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

Связь между файлом и программой разрывается при выполнении операции закрытия. При выполнении операции закрытия файла, открытого для вывода, связанного с ним потока (если оно есть) записывается на внешнее устройство.