- Stdio.h
-
stdio.h
Стандартная библиотека
языка программирования Сstdio.h (от англ. standard input/output header — стандартный заголовочный файл ввода/вывода) заголовочный файл стандартной библиотеки языка Си, содержащий определения макросов, константы и объявления функций и типов, используемых для различных операций стандартного ввода и вывода. Функциональность унаследована от «портативного пакета ввода/вывода» («portable I/O package»), написанного Майком Леском из Bell Labs в начале 1970-х.[1] C++ ради совместимости, также использует
stdio.hнаряду со схожим по функциональности заголовочным файлом cstdio.Функции, объявленные в
stdio.h, являются весьма популярными благодаря тому, что являясь частью Стандартной библиотеки языка Си, они гарантируют работу на любой платформе, поддерживающей Си. Приложения на отдельных платформах могут, тем не менее, иметь причины для использования функций ввода/вывода самой платформы вместо функцийstdio.h.Содержание
Пример использования
Все функции в языке Си (и его многочисленных разновидностей) объявляются в заголовочных файлах. Таким образом, программистам приходится подключать файл
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записывает сообщение об ошибке в stderrputcзаписывает и возвращает символ в поток и изменяет указатель позиции файла на него; можно использовать как макрос с теми же свойствами, что и fputc, кроме того, что он может обрабатывать поток более одного раза putchar, fputcharаналогичны putc(stdout) scanf, vscanfиспользуются для ввода из стандартного потока ввода fscanf, vfscanfиспользуются для ввода из файла sscanf, vsscanfиспользуются для ввода из массива char(то есть Строка в языке Си)setbufsetvbufустанавливает режим буферизации для данного потока 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.
См. также
- Поддержка больших файлов
Примечания
- ↑ Brian Kernighan The UNIX Programming Environment. — Englewood Cliffs: Prentice Hall. — P. pg. 200.
Ссылки
- — основные определения, The Single UNIX® Specification, выпуск 7 от The Open Group (англ.)
Wikimedia Foundation. 2010.