ВУЗ:
Составители:
Рубрика:
В примере 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
Возможны два режима обмена информацией с файлом: бинарный (двоичный) и текстовый. При работе с файлом в би-
нарном режиме средства буферизации отсутствуют. Информация считывается непосредственно в таком виде, в каком она
хранится в файле. Никакие ее дополнительные преобразования не выполняются. В этом режиме работы с файлом информа-
Страницы
- « первая
- ‹ предыдущая
- …
- 22
- 23
- 24
- 25
- 26
- …
- следующая ›
- последняя »