Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция2013.docx
Скачиваний:
7
Добавлен:
31.03.2015
Размер:
72.11 Кб
Скачать

1.3.2. Потоки ввода/вывода.

Стандартная библиотека содержит многочисленные функции, использующие собственный механизм буферизации при работе с файлами. Их часто называют функциями потокового ввода/вывода. Такую буферизацию не следует путать с буферизацией, выполняемой операционной системой. Имена всех этих функций начинаются на f - fopen , fclose , fprintf и т. д.

Функции потокового ввода/вывода хорошо описаны во многих учебных пособиях по языку программирования С, поэтому мы приведем лишь краткий обзор, делая акцент на особенностях их применения.

Существуют потоки, соответствующие стандартным устройствам ввода, вывода, вывода сообщений об ошибках, стандартному устройству последовательного ввода/вывода и стандартному устройство печати:

Поток

Описание

stdin

Стандартное устройство ввода;

stdout

Стандартное устройство вывода;

stderr

Стандартное устройство для вывода сообщений об ошибках;

stdaux

Стандартное последовательное устройство ввода/вывода;

stdprn

Стандартное печатающее устройство.

Для использования этих потоков не требуются выполнять процедуру открытия и закрытия.

Для работы со стандартными устройствами ввода/вывода в библиотеках трансляторов языка программирования С имеется соответствующий набор функций, которые должны быть вам хорошо известны - printf, scanf , putchar и т. д.

1.3.3. Обзор функций библиотеки.

Рассмотрим ряд наиболее употребляемых функций стандартной библиотеки ввода/вывода.

Таблица. Наиболее употребительные функции стандартной библиотеки ввода/вывода.

Функция

Назначение

fopen()

Открывает файл с указанным именем и возвращает файловый ука­затель, ассоциированный с данным файлом.

fclose()

Закрывает поток, освобождая буферы.

fflush()

Очищает буфер потока, открытого на запись.

getc()

Считывает символ из потока.

putc()

Записывает символ в поток.

gets()

Считывает строку из потока.

puts()

Записывает строку в поток.

fread()

Считывает указанное число байтов из потока (бинарный ввод).

fwrite()

Записывает указанное число байтов в поток (бинарный вывод).

fseek()

Позиционирует указатель в потоке.

printf()

Производит форматированный вывод.

scanf()

Производит форматированный ввод.

fileno()

Возвращает файловый дескриптор данного потока.

1.3.3.1. Функция fopen(). Открытие потока.

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

Функция fopen открывает файл с именем path и связывает его с потоком.

Параметр mode указывает на строку, начинающуюся с одной из следующих последовательностей (за ними могут следовать дополнительные символы):

r Открыть текстовый файл для чтения. Чтение начинается с начала файла.

r+ Открыть для чтения и записи. Чтение или запись начинаются с начала файла.

w "Урезать" файл до нулевой длины или создать текстовый файл и открыть его для записи. Запись начинается с начала файла.

w+ Открыть для чтения и записи. Файл создается, если до этого его не существовало, в противном случае он "урезается". Чтение или запись начинаются с начала файла.

A Открыть для дописывания (записи в конец файла). Файл создается, если до этого его не существовало. Запись осуществляется в конец файла.

a+ Открыть для чтения и дописывания (записи в конец файла). Файл создается, если до этого его не существовало. Чтение или запись производятся с конца файла.

При успешном завершении fopen  возвращают указатель FILE. Иначе возвращается NULL, а в глобальную переменную errno записывается код ошибки.

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