Чтение онлайн

на главную - закладки

Жанры

Язык программирования Си для персонального компьютера

Субботин Д. М.

Шрифт:

Функции access, chmod, rename, stat и unlink оперируют с файлами, которые задаются через имя пути (pathname) -или через имя файла.

Функции chsize, filelength, isatty, locking, setmode, fstat работают с уже открытыми файлами, которые определяются дескрипторами (handle) (смотри далее описание функций ввода/вывода нижнего уровня).

Ввод и вывод

Функции ввода и вывода в стандартной библиотеке Си позволяют читать данные из файлов или получать их с устройств ввода (например, с клавиатуры) и записывать данные в файлы, или выводить их на различные устройства (например, на принтер).

Функции ввода/вывода делятся на три класса:

1) Ввод/вывод верхнего уровня (с использованием понятия "поток").

2) Ввод/вывод для консольного терминала путем непосредственного обращения к нему.

3)

Ввод/вывод нижнего уровня (с использованием понятия "дескриптор").

В библиотеке есть также функции для работы с последовательным портом (СОМ), они отнесены условно ко второй группе.

функции ввода/вывода верхнего уровня обеспечивают буферизацию работы с файлами. Это означает, что, когда производится чтение информации из файла или запись информации в файл, обмен информацией осуществляется не между программой и указанным файлом, а между программой и промежуточным буфером, расположенным в оперативной памяти.

Если производится операция записи в файл, то информация из буфера записывается в файл при заполнении буфера или при закрытии файла (или при выполнении каких-то других условий, смотри ниже). Если информация считывается из файла, то она на самом деле берется из буфера, а в буфер информация считывается из файла при открытии файла и впоследствии каждый раз при исчерпании (опустошении) буфера. Буферизация ввода/вывода выполняется автоматически, она позволяет ускорить выполнение программы за счет уменьшения количества обращений к сравнительно медленно работающим внешним устройствам.

Для пользователя файл, открытый на верхнем уровне, представляется как последовательность считываемых или записываемых байтов. Чтобы отразить эту особенность организации ввода/вывода, предложено понятие "поток" (соответствует английскому слову 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 дополнительно предоставляет следующие функции:

Функция Краткое описание
rmtemp удаление временных файлов, созданных посредством функции tmpfile
tmpnam сгенерировать имя временного файла
vprintf запись данных в поток stdout по формату

Система программирования ТС дополнительно предоставляет следующие функции:

Функция Краткое описание
vfscanf эти функции подобны функциям fscanf, scanf и sscanf, но принимают как параметр указатель на список аргументов — адресов переменных, которым присваиваются вводимые значения
vscanf  
vsscanf  

Прототипы всех функций ввода/вывода верхнего уровня содержатся в файле stdio.h.

Некоторые константы, определенные в stdio.h, могут быть полезны в программе:

Поделиться:
Популярные книги

Последний Паладин. Том 2

Саваровский Роман
2. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 2

Зубных дел мастер

Дроздов Анатолий Федорович
1. Зубных дел мастер
Фантастика:
научная фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Зубных дел мастер

Истребитель. Ас из будущего

Корчевский Юрий Григорьевич
Фантастика:
боевая фантастика
попаданцы
альтернативная история
5.25
рейтинг книги
Истребитель. Ас из будущего

Честное пионерское! Часть 3

Федин Андрей Анатольевич
3. Честное пионерское!
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Честное пионерское! Часть 3

Обгоняя время

Иванов Дмитрий
13. Девяностые
Фантастика:
попаданцы
5.00
рейтинг книги
Обгоняя время

Страж. Тетралогия

Пехов Алексей Юрьевич
Страж
Фантастика:
фэнтези
9.11
рейтинг книги
Страж. Тетралогия

Магия чистых душ

Шах Ольга
Любовные романы:
любовно-фантастические романы
5.40
рейтинг книги
Магия чистых душ

Имя нам Легион. Том 4

Дорничев Дмитрий
4. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Имя нам Легион. Том 4

Девятый

Каменистый Артем
1. Девятый
Фантастика:
боевая фантастика
попаданцы
9.15
рейтинг книги
Девятый

Морской волк. 1-я Трилогия

Савин Владислав
1. Морской волк
Фантастика:
альтернативная история
8.71
рейтинг книги
Морской волк. 1-я Трилогия

Отмороженный 8.0

Гарцевич Евгений Александрович
8. Отмороженный
Фантастика:
постапокалипсис
рпг
аниме
5.00
рейтинг книги
Отмороженный 8.0

Совершенный: охота

Vector
3. Совершенный
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Совершенный: охота

Калибр Личности 1

Голд Джон
1. Калибр Личности
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Калибр Личности 1

Личник

Валериев Игорь
3. Ермак
Фантастика:
альтернативная история
6.33
рейтинг книги
Личник