|
STDIO(3S)НАЗВАНИЕ СИНТАКСИС #include <stdio.h> FILE *stdin, *stdout, *stderr; ОПИСАНИЕ Файл и ассоциированный с ним механизм буферизации называются потоком. Поток описывается как указатель на переменную типа FILE. Функция fopen(3S) создает описатель потока и возвращает указатель на него. Этот указатель идентифицирует поток во всех последующих операциях. Обычно имеются три открытых потока с постоянными указателями, они описаны во включаемом файле <stdio.h> и связаны со стандартными открытыми файлами: stdin стандартный ввод stdout стандартный вывод stderr стандартный протоколКонстанта NULL (0) обозначает пустой указатель. Целая константа EOF (-1) возвращается по достижении конца файла или в случае ошибки большинством из целочисленных функций, работающих с потоками (для получения детальной информации см. описания отдельных функций). Целая константа BUFSIZ специфицирует размер буферов, используемых в конкретной реализации. Любая программа, использующая данный пакет ввода/вывода, должна включать файл соответствующих макроопределений следующим образом: #include <stdio.h> Функции и константы, упоминаемые в разделе 3S этого руководства, описаны в файле <stdio.h> и не требуют дальнейшего описания. Константы и следующие "функции" реализованы как макросы (переопределение этих имен опасно): getc, getchar, putc, putchar, ferror, feof, clearerr и fileno. Потоки вывода, за исключением стандартного протокола stderr, по умолчанию буферизуются, если вывод производится в файл, и буферизуется построчно, если вывод производится на терминал. Стандартный протокол stderr по умолчанию не буферизуется, но использование функции freopen [см. fopen(3S)] приводит к тому, что стандартный протокол становится буферизованным или буферизованным построчно. Когда поток вывода не буферизован, данные выводятся в нужный файл или на терминал по мере поступления запросов на запись; когда поток вывода буферизован, байты накапливаются и записываются блоком. Когда поток вывода буферизован построчно, каждая выводимая строка выводится на терминал после заполнения строки (то есть как только выводится символ перевода строки или поступает запрос на ввод с терминала). Функции setbuf или setvbuf [см. setbuf(3S)] могут использоваться для изменения стратегии буферизации потоков. СМ. ТАКЖЕ ДИАГНОСТИКА |
|