- stdio.h
-
Стандартная библиотека
языка программирования Сstdio.h (от англ. standard input/output header — стандартный заголовочный файл ввода/вывода) заголовочный файл стандартной библиотеки языка Си, содержащий определения макросов, константы и объявления функций и типов, используемых для различных операций стандартного ввода и вывода. Функциональность унаследована от «портативного пакета ввода/вывода» («portable I/O package»), написанного Майком Леском из Bell Labs в начале 1970-х.[1] C++ ради совместимости, также использует
stdio.h
наряду со схожим по функциональности заголовочным файлом cstdio.Функции, объявленные в
stdio.h
, являются весьма популярными благодаря тому, что являясь частью Стандартной библиотеки языка Си, они гарантируют работу на любой платформе, поддерживающей Си. Приложения на отдельных платформах могут, тем не менее, иметь причины для использования функций ввода/вывода самой платформы вместо функцийstdio.h
.Стандарт определяет такое понятие, как поток — последовательный набор информации, который может быть входным или выходным, может быть представлен как файлом, так и устройством (например, терминалом).[2]. Поток может быть текстовым или бинарным. Текстовый поток — поток символов, разделённых строками. Каждая строка заканчивается символом новой строки. Бинарный поток — поток байтов, которые могут прозрачно представлять любую информацию. Поток может быть в одном из трёх состояний: неориентированном (по умолчанию), «широко символьном» или битовым. Состояние определяется последней функцией, которая использовала этот поток.
Содержание
Пример использования
Все функции в языке Си (и его многочисленных разновидностей) объявляются в заголовочных файлах. Таким образом, программистам приходится подключать файл
stdio.h
к исходному коду, чтобы использовать функции, объявленные в нём.#include <stdio.h> int main(void) { int ch; while ((ch = getchar()) != EOF) putchar(ch); putchar('\n'); return 0; }
Программа, приведённая выше, считывает всю входящую информацию из стандартного ввода и выводит её побайтно на стандартный вывод, добавляя символ перевода строки в конец вывода.
Функции
Функции, объявленные в
stdio.h
в общем случае могут быть разделены на две категории: функции для операций с файлами и функции для операций ввода-вывода.Имя Примечания Функции для файловых операций fclose
закрывает файл, ассоциированный с переданным ей значением FILE * fopen, freopen, fdopen
открывают файл для определённых типов чтения и записи remove
удаляет файл (стирая его) rename
переименовывает файл rewind
работает аналогично fseek(stream, 0L, SEEK_SET), вызванному для потока, со сбросом индикатора ошибок tmpfile
создает и открывает временный файл, удаляемый при закрытии через fclose() Функции для операций ввода-вывода clearerr
очищает EOF и индикаторы ошибок для данного потока feof
проверяет, установлен ли индикатор EOF для данного потока ferror
проверяет, установлен ли индикатор ошибок для данного потока fflush
принудительно записывает вывод, предназначенный для помещения в буфер, в файл, ассоциированный с данным потоком fgetpos
сохраняет позицию указателя файла потока, ассоциированный с его первым аргументом (FILE *), в его второй аргумент (fpos_t *) fgetc
возвращает один символ из файла fgets
получает строку из файла (оканчивающуюся символом перевода строки или конца файла) fputc
записывает один символ в файл fputs
записывает строку в файл ftell
возвращает указатель позиции файла, который может быть передан fseek fseek
производит смещение от текущей позиции в файле на указанное количество байт, или от его начала или конца, в указанном направлении. fsetpos
устанавливает указатель позиции файла потока, ассоциированный с его первым аргументом (FILE *), как хранимый во втором его аргументе (fpos_t *) fread
читает данные из файла fwrite
записывает данные в файл getc
считывает и возвращает символ из данного потока и изменяет указатель позиции файла; позволяет использоваться как макрос с теми же эффектами, что и fgetc, кроме того, что может вычислять поток более одного раза getchar
имеет аналогичный эффект, что и getc(stdin) gets
считывает символы из stdin
до символа перевода строки и хранит их в своём единственном аргументеprintf, vprintf
используются для вывода в стандартный поток вывода fprintf, vfprintf
используются для вывода в файл sprintf, snprintf, vsprintf
используются для вывода в массив типа char
(Строка в языке Си)perror
записывает сообщение об ошибке в stderr
putc
записывает и возвращает символ в поток и изменяет указатель позиции файла на него; можно использовать как макрос с теми же свойствами, что и fputc, кроме того, что он может обрабатывать поток более одного раза putchar, fputchar
аналогичны putc(stdout) scanf, vscanf
используются для ввода из стандартного потока ввода fscanf, vfscanf
используются для ввода из файла sscanf, vsscanf
используются для ввода из массива char
(то есть Строка в языке Си)setbuf
setvbuf
устанавливает режим буферизации для данного потока tmpnam
создает имя временного файла ungetc
помещает символ обратно в поток puts
выводит символьную строку в stdout
Константы
Следующие константы определены в заголовочном файле
stdio.h
:Имя Примечания EOF
отрицательное целое число типа int
, используемое для обозначения конца файлаBUFSIZ
целое число, равное размеру буфера, используемое функцией setbuf()
FILENAME_MAX
размер массива char
, достаточного для хранения имени любого файла, который может быть открытFOPEN_MAX
число файлов, которые могут быть открыты одновременно; как минимум равно 8 _IOFBF
сокращение от «input/output fully buffered» (полностью буферируемый ввод/вывод); целое число, которое может быть передано функции setvbuf()
для запроса блока буфера ввода и вывода для открытого потока_IOLBF
сокращение от «input/output line buffered» (линейно буферируемый ввод/вывод); целое число, которое может быть передано функции setvbuf()
для запроса линии буфера ввода и вывода для открытого потока_IONBF
сокращение от «input/output not buffered» (не буферируемый ввод/вывод); целое число, которое может быть передано функции setvbuf()
для запроса небуферированого ввода и вывода для открытого потокаL_tmpnam
размер массива char
, достаточного для хранения временного имени файла, сгенерированного функциейtmpnam()
NULL
макрос, расширяющий константу нулевого указателя; то есть, константу, представляющую значение указателя, гарантированно указывающего несуществующий адрес объекта в памяти SEEK_CUR
целое число, которое может быть передано функции fseek()
для запроса позиционирования относительно текущей позиции в файлеSEEK_END
целое число, которое может быть передано функции fseek()
для запроса позиционирования относительно конца файлаSEEK_SET
целое число, которое может быть передано функции fseek()
для запроса позиционирования относительно начала файлаTMP_MAX
максимальное число уникальных имен файлов, генерируемых функцией tmpnam()
; как минимум 25Переменные
Следующие переменные опеределены в заголовочном файле
stdio.h
:Имя Примечания stdin
указатель на FILE
, указывающий на стандартный поток ввода (обычно клавиатура).stdout
указатель на FILE
, указывающий на стандартный поток вывода (обычно дисплей терминала).stderr
указатель на FILE
, указывающий на стандартный поток ошибок (обычно дисплей терминала).Типы
Типы данных, определённые в заголовочном файле
stdio.h
содержат:FILE
— структура, содержащая информацию о файле или текстовом потоке, необходимую для выполнения её операций ввода и вывода операций, включая:- файловый дескриптор
- текущую позицию в потоке
- индикатор конца файла
- индикатор ошибок
- указатель на буфер потока, если возможно
fpos_t
— не массивообразный тип, способный уникально идентифицировать позицию каждого байта в файле.size_t
— беззнаковый целый тип, являющийся типом результата выполнения оператораsizeof
.
Примечания
- ↑ Kernighan Brian The UNIX Programming Environment. — Englewood Cliffs: Prentice Hall. — P. pg. 200.
- ↑ ISO/IEC 9899:1999
Ссылки
stdio.h
— основные определения, The Single UNIX® Specification, выпуск 7 от The Open Group (англ.)
Категории:- Стандартные библиотечные заголовки языка Си
- Stdio.h
Wikimedia Foundation. 2010.