Unix Man (Справочное руководство)



STDIO(3S)


STDIO(3S)

НАЗВАНИЕ


stdio - стандартный пакет буферизованного ввода/вывода

СИНТАКСИС

#include <stdio.h>

FILE *stdin, *stdout, *stderr;

ОПИСАНИЕ


Макросы и функции, относящиеся к разделу 3S этого Справочника, предоставляют пользователю эффективные средства буферизованного ввода/вывода. Макросы и служат для быстрого ввода/вывода символов. Макросы getchar и putchar и функции более высокого уровня fgetc, fgets, fprintf, fputc, fputs, fread, fscanf, fwrite, gets, getw, printf, puts, putw и scanf ведут себя так, как если бы они использовали getc и putc. Обращения к макросам и функциям из данного пакета можно чередовать произвольным образом.

Файл и ассоциированный с ним механизм буферизации называются потоком. Поток описывается как указатель на переменную типа FILE. Функция создает описатель потока и возвращает указатель на него. Этот указатель идентифицирует поток во всех последующих операциях. Обычно имеются три открытых потока с постоянными указателями, они описаны во включаемом файле <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 [см. ] приводит к тому, что стандартный протокол становится буферизованным или буферизованным построчно. Когда поток вывода не буферизован, данные выводятся в нужный файл или на терминал по мере поступления запросов на запись; когда поток вывода буферизован, байты накапливаются и записываются блоком. Когда поток вывода буферизован построчно, каждая выводимая строка выводится на терминал после заполнения строки (то есть как только выводится символ перевода строки или поступает запрос на ввод с терминала). Функции setbuf или setvbuf [см. ] могут использоваться для изменения стратегии буферизации потоков.

СМ. ТАКЖЕ


, , , , , , , , , , , , , , , , , , , , , , , , .

ДИАГНОСТИКА


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




Содержание  Назад  Вперед