Функция |
Краткое описание |
rmtemp |
удаление временных файлов, созданных посредством функции tmpfile |
tmpnam |
сгенерировать имя временного файла |
vprintf |
запись данных в поток stdout по формату |
Система программирования ТС дополнительно предоставляет следующие функции:
Функция |
Краткое описание |
vfscanf |
эти функции подобны функциям fscanf, scanf и sscanf, но принимают как параметр указатель на список аргументов — адресов переменных, которым присваиваются вводимые значения |
vscanf |
|
vsscanf |
|
Прототипы всех функций ввода/вывода верхнего уровня содержатся в файле stdio.h.
Некоторые константы, определенные в stdio.h, могут быть полезны в программе:
константа EOF |
код, возвращаемый как признак конца файла |
константа NULL |
значение указателя, который не содержит адрес никакого реально размещенного в оперативной памяти объекта |
константа BUFSIZ |
определяет размер буфера потока в байтах |
имя типа FILE |
структура, которая содержит информацию о потоке |
Высокоуровневое открытие файлов
Функции открытия потока возвращают указатель на тип FILE (этот указатель называют также указателем потока), этот указатель используется при дальнейших обращениях к потоку.
Стандартные потоки: stdin, stdout, stdeir, stdaux, stdprn.
Когда программа начинает выполняться, автоматически открываются пять потоков. Эти потоки — стандартный ввод ( stdin), стандартный вывод ( stdout), стандартный вывод для сообщений об ошибках ( stderr), стандартный последовательный порт ( stdaux) и стандартное устройство печати ( stdprn).
По умолчанию стандартный ввод/вывод и стандартный вывод сообщений об ошибках связывается с консольным терминалом.
Назначения по умолчанию для стандартного порта и стандартного устройства печати зависят от конфигурации аппаратуры компьютера; эти потоки обычно связываются с последовательным портом и принтером, но могут быть и не установлены в отдельных системах.
Следующие указатели на структуру типа. FILE определяются в файле stdio.hи могут использоваться в любом месте как указатели потоков:
extern FILE * stdin; — стандартный ввод
extern FILE * stdout; — стандартный вывод
extern FILE * stderr; — стандартный вывод сообщений об ошибках
extern FILE * sidaux; — стандартный порт
extern FILE * stdprn; — стандартное устройство печати
При запуске оттранслированной программы на выполнение можно использовать символы перенаправления в/в из командного языка MS-DOS ( < , > или >> ) для переопределения стандартного ввода и вывода программы.
Можно переопределить stdin, stdout, stderr, stdauxили stdprnтак, что они будут относиться к файлу на диске или устройству. Такие возможности предоставляет функция freopen.
Управление буферизацией потоков
Открытые файлы, для которых осуществляется высокоуровневый ввод/вывод, буферизуются по умолчанию, за исключением потоков stdin, stdout, stderr, stdaux, stdprn.
Потоки stderrи stdaux— не буферизованы. Если к ним применяется функция printfили scanf, создается временный буфер. Для обоих потоков может задаваться буферизация с помощью функций setbufили setvbuf.
Буферизация для потоков stdin, stdout, stdprnвыполняется следующим образом: буфер сбрасывается при его заполнении или когда вызванная библиотечная функция ввода/вывода завершает работу.
Использованием функции setbufили setvbufможно сделать поток небуферизованным или связать буфер с небуферизованным до этого потоком. Буфера, размещенные в системе, недоступны пользователю, кроме буферов, полученных с помощью setbufили setvbuf.
Буфера должны иметь постоянный размер, равный константе BUFSIZ в stdio.h.
Если используется setvbuf, размер буфера устанавливает пользователь. Буфера автоматически сбрасываются при их наполнении, или когда связанный с буфером файл закрывается, или когда происходит нормальное завершение программы.
Можно сбросить буфера в произвольный момент времени, используя функции fflushи flushall. Функция fflushсбрасывает буфер одного заданного потока, а функция flushallсбрасывает буфера всех потоков, которые открыты и буферизованы в данный момент.
Читать дальше