Для пользователя файл, открытый на верхнем уровне, представляется как последовательность считываемых или записываемых байтов. Чтобы отразить эту особенность организации ввода/вывода, предложено понятие "поток" (соответствует английскому слову stream). Когда файл открывается, с ним связывается поток, выводимая информация записывается "в поток", считываемая информация берется "из потока".
Когда поток открывается для ввода/вывода, он связывается со структурой типа FILE (имя типа FILE определяется с помощью конструкции typedefв файле stdio.h). Структура содержит разнообразную информацию о файле. При открытии файла с помощью функции fopenвозвращается указатель на структуру типа FILE. Этот указатель (указатель потока) используется для последующих операций с файлом, пользователь не обязан вникать в способ организации потока, он только должен сохранить полученный указатель и передавать его значение всем библиотечным функциям, используемым для ввода/вывода через этот поток.
Функции в/в верхнего уровня дают возможность для буферизованного форматированного и неформатированного ввода/вывода.
Функции в/в верхнего уровня относятся к числу функций, одинаково реализуемых в различных ОС и на разных компьютерах, с их помощью пользователь имеет возможность писать переносимые программы.
Функции ввода/вывода для консоли и порта распространяют возможности функций ввода/вывода верхнего уровня на этот класс устройств, добавляя новые возможности.
Они позволяют читать или записывать на консоль (терминал) или в порт ввода/вывода (например, порт принтера). Функции в/в с портом читают или записывают данные побайтно. Некоторые дополнительные режимы устанавливаются для в/в с консоли (например: ввод с эхо-печатью символов и без эхо-печати).
Функции в/в для консоли и порта являются уникальными для компьютеров типа IBM/PC.
Функции в/в низкого уровня не выполняют буферизацию и форматирование данных; они позволяют непосредственно пользоваться средствами ввода/вывода операционной системы.
При низкоуровневом открытии файла (при помощи функции open) с ним связывается дескриптор ( handle). Дескриптор является целым значением, характеризующим размещение информации об открытом файле во внутренних таблицах системы. Дескриптор используется при последующих операциях с файлом.
Функции в/в нижнего уровня из стандартной библиотеки целесообразно использовать при разработке своей собственной подсистемы ввода/вывода.
Функции в/в нижнего уровня переносимы в рамках некоторых систем программирования Си, в частности относящихся к ОС UNIX.
Функции вода/вывода высокого уровня
Функция |
Краткое описание |
clearerr |
очистка флажка ошибки для потока |
fclose |
закрытие потока |
fcloseall |
закрытие всех открытых (на верхнем уровне) файлов |
fdopen |
создание потока для файла, ранее открытого на нижнем уровне, используя дескриптор |
feof |
проверка на конец потока |
ferror |
проверка флажка ошибок потока |
flush |
сброс буфера потока на связанное с ним внешнее устройство |
fgetc |
чтение символа из потока |
fileno |
получение дескриптора файла, связанного с потоком |
fgetchar |
чтение символа из стандартного потока ввода stdin |
fgets |
чтение строки из потока |
flushall |
сброс буферов всех потоков |
fopen |
открытие потока (открыть файл и связать его с потоком) |
fprint |
запись данных в поток по формату |
fputc |
запись символа в поток |
fputchar |
запись символа в стандартный поток вывода stdout |
fputs |
запись строки в поток |
fread |
неформатированное чтение данных из потока |
freopen |
повторное открытие потока в новом режиме |
fscanf |
чтение из потока по формату |
fseek |
перемещение указателя файла в заданную позицию |
ftell |
получение текущей позиции указателя файла |
fwrite |
неформатированная запись данных в поток |
getc |
чтение символа из потока (реализуется через макроопределение) |
getchar |
чтение символа из потока stdin (версия макро) |
gets |
чтение строки из потока stdin |
getw |
чтение двух байтов (по размеру int) в формате слова из потока |
printf |
запись данных в поток stdout по формату |
putc |
запись символа в поток (версия макро) |
putchar |
запись символа в поток stdout (версия макро) |
puts |
запись строки в поток |
putw |
запись двух байтов (по размеру int) в формате слова в поток |
rewind |
установка указателя по файлу на начало файла |
scanf |
чтение данных из потока stdin по формату |
setbuf |
управление буферизацией потока |
setvbuf |
управление буферизацией потока и размером буфера |
sprintf |
запись данных в строку по формату |
sscanf |
чтение данных из строки по формату |
tempnam |
сгенерировать имя временного файла в заданном каталоге |
tmpfile |
создать временный файл |
ungetc |
вернуть символ в поток |
vfprintf |
запись данных в поток по формату |
vsprintf |
запись данных в строку по формату |
Система программирования MSC дополнительно предоставляет следующие функции:
Читать дальше