WikiSort.ru - Не сортированное

ПОИСК ПО САЙТУ | о проекте
Стандартная библиотека
языка программирования С

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.

Примечания

Ссылки

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии