stdio -
библиотека
функций
стандартного
ввода-вывода
Standard C library (
libc,
-lc)
#include <stdio.h>
FILE *stdin;
FILE *stdout;
FILE *stderr;
Библиотеки
стандартного
ввода-вывода
предоставляют
простой и
эффективный
интерфейс
буферизируемого
потока
ввода-вывода.
Ввод и
вывод
представляется
логическим
потоком
данных, а
физические
характеристики
ввода-вывода
скрываются.
Далее
приводится
список
функций и
макросов;
более
подробная
информация
находится
в
соответствующих
страницах.
A stream is associated with an external file (which may be a physical device) by
opening a file, which may involve creating a new file. Creating an
existing file causes its former contents to be discarded. If a file can
support positioning requests (such as a disk file, as opposed to a terminal),
then a
file position indicator associated with the stream is positioned
at the start of the file (byte zero), unless the file is opened with append
mode. If append mode is used, it is unspecified whether the position indicator
will be placed at the start or the end of the file. The position indicator is
maintained by subsequent reads, writes, and positioning requests. All input
occurs as if the characters were read by successive calls to the
fgetc(3) function; all output takes place as if all characters were
written by successive calls to the
fputc(3) function.
Соотношение
потока с
файлом
прекращается
при
закрытии
файла.
Перед
прекращением
потоки
вывода
очищаются
(flushed)
(содержимое
незаписанного
буфера
передаётся
в
системное
окружение).
Значение
указателя
на объект
FILE
после
закрытия
файла
становится
неопределённым
(мусорным).
Впоследствии
файл может
быть
открыт ещё
раз той же
самой или
другой
программой,
а его
содержание
может быть
восстановлено
или
изменено
(если можно
перейти в
его начало).
Если
основная
функция
завершает
работу и
возвращает
значения
своему
родителю
или если
вызывается
функция
exit(3),
то перед
закрытием
программы
закрываются
все
открытые
файлы (и,
следовательно,
очищаются
все потоки
вывода).
Другие
методы
закрытия
программ,
например,
abort(3), не
всегда
приводят к
корректному
закрытию
файлов.
При
запуске
программы
предопределяются
три
текстовых
потока,
которые не
следует
открывать
явно:
стандартный
ввод (standard input)
(для чтения
условного
ввода),
стандартный
вывод (standard output)
(для записи
условного
вывода) и
стандартный
поток
ошибок (standard error)
(для вывода
диагностики).
Сокращённые
названия
потоков:
stdin,
stdout и
stderr. При
открытии,
стандартный
поток
ошибок
буферизируется
не
полностью;
стандартные
потоки
ввода и
вывода
полностью
буферизируются
только при
условии,
что они не
ссылаются
на
какое-либо
интерактивное
устройство.
Потоки
вывода,
ссылающиеся
на
устройства
терминала,
по
умолчанию
буферизируются
построчно;
ожидающие
в таких
потоках
данные
записываются
автоматически
всякий раз
при чтении
из потока
ввода,
ссылающегося
на
терминал. В
случаях,
когда
после
вывода на
терминал
части
строки
объём
производимых
вычислений
велик,
необходимо
выполнять
fflush(3), чтобы
появилась
часть
строки до
вычислений.
Библиотека
stdio является
частью
библиотеки
libc, а функции
автоматически
загружаются
cc(1) по мере
надобности.
В разделе
СИНТАКСИС
справочных
страниц
указано
какие
файлы
заголовков
необходимо
использовать,
как
выглядят
объявления
функций и
какие
внешние
переменные
представляют
интерес
для работы.
В списке
далее
перечислены
макросы;
эти имена
не могут
быть
использованы
повторно
без
предварительного
удаления
их
определений
с помощью
#undef:
BUFSIZ,
EOF,
FILENAME_MAX,
FOPEN_MAX,
L_cuserid,
L_ctermid,
L_tmpnam,
NULL,
SEEK_END,
SEEK_SET,
SEEK_CUR,
TMP_MAX,
clearerr,
feof,
ferror,
fileno,
getc,
getchar,
putc,
putchar,
stderr,
stdin,
stdout. Для
feof,
ferror,
clearerr,
fileno,
getc,
getchar,
putc, и
putchar
существуют
версии в
виде
функций,
которые
используются
если
определения
макросов
были
удалены
явно.
The
stdio library conforms to C99.
close(2),
open(2),
read(2),
write(2),
stdout(3),
unlocked_stdio(3)
Русский
перевод
этой
страницы
руководства
был сделан
Alexander Golubev <
[email protected]>, Azamat Hackimov
<
[email protected]>, Hotellook, Nikita
<
[email protected]>, Spiros Georgaras <
[email protected]>, Vladislav
<
[email protected]>, Yuri Kozlov <
[email protected]>
и Иван
Павлов <
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]