Основы программирования для автоматизированного проектирования и решения творческих задач. Романенко А.В - 24 стр.

UptoLike

Составители: 

В примере 22 показана возможность обращения к отдельным битам поля с, которое хранит код символа.
11.5 Файлы
Файл представляет собой последовательность данных произвольной длины, которая имеет некоторую логическую ор-
ганизацию и хранится на внешнем носителе. Особенностью языка С является отсутствие в самом языке средств работы с
файлами и, как следствие, заранее сформированных представлений о структуре файлов. Поэтому все файлы рассматривают-
ся как последовательность байтов, заканчивающаяся особым кодом, обозначающим их окончание. Функции языка С позво-
ляют осуществлять потоковый ввод-вывод и ввод-вывод нижнего уровня. При потоковом вводе-выводе обмен данными про-
изводится побайтно, но возможно работать с данными различных размеров и форматов посредством организации буферизо-
ванного потока. Таким образом, можно сказать, что потокэто файл вместе со средствами буферизации. Для работы с по-
током предусмотрен ряд функций, описанных в заголовочном файле stdio.h.
Запущенная на выполнение программа на языке С автоматически связывается с пятью потоками:
1) stdinстандартный поток для ввода данных;
2) stdoutстандартный поток для вывода данных;
3) stderrстандартный поток для сообщений об ошибках;
4) stdauxасинхронный порт;
5) stdprnпорт принтера.
Потоки stdaux и stdprn могут быть не установлены.
Все остальные потоки необходимо явно открывать в процессе работы программы. В исполняемой программе поток свя-
зывается со структурой типа FILE, определенной в файле stdio.h. В структуре FILE содержатся компоненты, при помощи
которых осуществляется работа с потоком. При открытии потока в программу возвращается указатель на поток, соответст-
вующий указателю на объект типа FILE. Указатель, связывающий исполняемую программу с файлом, должен быть объяв-
лен в виде
FILE *имя_потока;
Связать указатель с файлом для ввода-вывода данных через поток можно с помощью функции, имеющей следующий
описатель:
FILE *fopen(const char *filename, const char *mode);
здесь filenameуказатель на строку со спецификацией открываемого файла; modeуказатель на строку символов, описы-
вающую режим работы с файлом.
Если файл открыть не удалось, функция fopen возвращает значение NULL.
Режим работы с файлом во-первых определяет что произойдет с файлом в момент его открытия и какие особенности
будет носить работа с ним. Возможные варианты открытия потока в программе приведены в табл. 7.
7 Варианты открытия потоков
Описатель Режим работы
r
Файл открывается в режиме чтения. Он должен сущест-
вовать. Иначе возвращается значение NULL
w
Файл открывается для записи. Если указанный файл су-
ществует, то его содержимое стирается. Если файл не
существует, то он создается в указанной директории.
В случае неудачи возвращает значение NULL
a
Режим дополнения. Файл открывается для записи, но
его содержимое не стирается, а указатель устанавлива-
ется на байт с кодом "конец файла". Если файл не суще-
ствовал, то он создается. В случае неудачи возвращает
значение NULL
r+
Открытие файла для обновления. Файл доступен для
чтения и записи в рамках существующих границ. Ин-
формация, записанная вне границ файла, игнорируется
w+
Файл доступен для записи и чтения. Содержимое суще-
ствовавшего файла стирается при его открытии. В слу-
чае неудачи возвращается значение NULL
a+
Файл доступен для чтения и записи. Указатель при от-
крытии файла устанавливается на его конец. В случае
неудачи возвращается значение NULL
Возможны два режима обмена информацией с файлом: бинарный (двоичный) и текстовый. При работе с файлом в би-
нарном режиме средства буферизации отсутствуют. Информация считывается непосредственно в таком виде, в каком она
хранится в файле. Никакие ее дополнительные преобразования не выполняются. В этом режиме работы с файлом информа-