Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lek13_14.doc
Скачиваний:
9
Добавлен:
13.07.2019
Размер:
695.3 Кб
Скачать

Потоковые функции

Чтобы получить доступ к потоковым функциям, приложение должно подключить файл STDIO.H. Этот файл содержит объявления констант, типов данных и структур, используемых этими функциями, а также прототипы самих функций и описания служебных макросов.

Многие константы, содержащиеся в файле STDIO.H, находят достаточно широкое применение в приложениях. Например, константа eof возвращается функциями ввода при достижении конца файла, а константа null служит нулевым ("пустым") указателем. Другие примеры: тип данных FILE представляет собой структуру, содержащую информацию о потоке, а константа BUFSIZ задает стандартный размер в байтах буфера, используемого потоком.

Открытие файлов и потоков

Чтобы открыть файл для ввода или вывода данных, воспользуйтесь одной из следующих функций: fopen(),fdopen() или freopen() Файл открывается для чтения, записи или для выполнения обеих операций. Кроме того, файл может быть открыт в текстовом или в двоичном режиме.

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

FILE *pfinfile =  fopen("input.dat", "r");

Открывает поток функция

FILE* fopen(

const char *filename,// имя файла, ассоциированного с потоком

const char *mode // строка режимов работы с потоком

) — возвращает указатель на поток, который идентифицирует его в последующих операциях.

В строке режимов могут находиться следующие символы:

r — открыть только для чтения.

w — создать для записи. Существующий файл будет перекрыт новым.

a — открыть для дозаписи, или создать для записи, если файл не существует.

+ — операции будут выполняться с уже существующим файлом.

t — текстовый режим (обработка символов CR-LF).

b — двоичный режим (никакой обработки).

При отсутствии в строке b или t, режим определяется глобальной переменной _fmode, определенной в заголовочном файле fcntl.h.

FILE — это управляющая структура для потока, объявленная в stdio.h. Она не предназначена для прямого использования.

Поток является программной надстройкой над файлом, предоставляющей программисту дополнительный сервис. Помимо совместного открытия потока и файла (fopen), можно открыть поток и ассоциировать его с уже открытым файлом (fdopen), открыть файл и ассоциировать его с уже открытым потоком (freopen).

При запуске приложения автоматически открываются сразу пять стандартных потоков: ввода (stdin), вывода (stdout), ошибок (stderr), печати (stdprn) и внешнего устройства (stdaux). По умолчанию стандартные потоки ввода, вывода и ошибок связаны с консолью. Например, данные, записываемые в стандартный вывод, выводятся на терминал. Любое сообщение об ошибке, сгенерированное библиотечной функцией, также выводится на терминал. Потоки stdprnи stdaux направляют данные соответственно в порт принтера и порт внешнего устройства.

Во всех функциях, где в качестве аргумента требуется указатель на поток, можно использовать любой из перечисленных выше указателей. Некоторые функции, такие как getchar() и putchar(), работают только с потоками stdin и stdout. Поскольку указатели stdin, stdout, stderr, stdprn и stdaux являются константами, а не переменными, не пытайтесь переадресовать их на другие потоки.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]