Перейти к содержимому

Include stdio h что это

  • автор:

Заголовочный файл cstdio (stdio.h)

Заголовочный файл cstdio обеспечивает выполнение операций ввода/вывода. Операции ввода/вывода в С++ могут быть выполнены, с использованием Стандартной библиотеки ввода/вывода ( cstdio в С++, и stdio.h в Cи). Эта библиотека использует так называемые потоки для работы с физическими устройствами, такими как клавиатуры, принтеры, терминалы или с любыми другими типами файлов, поддерживаемых системой. Потоки являются абстракцией, для взаимодействия с устройствами, которая упрощает организацию ввода/вывода. Все потоки имеют аналогичные свойства независимо от индивидуальных особенностей физических носителей. Потоки обрабатываются в заголовочном файле cstdio как указатели на файловые объекты. Указатель на объект файла однозначно идентифицируется как поток, и используется в качестве параметра в операциях с участием этого потока. В этой библиотеке существуют три стандартных потока:

  • стандартный ввод;
  • стандартный вывод;
  • стандартный поток ошибок.

Все эти потоки автоматически доступны, если подключить библиотеку cstdio .

Основные свойства потоков

Потоки имеют некоторые свойства, которые определяют, какие функции могут быть использованы для организации ввода/вывода и каким образом будет осуществляться обмен данными через потоки ввода или вывода. Большинство из этих свойств определяются в момент, когда поток, связанный с файлом, открыт с помощью функции fopen .

  • Доступ потока к чтению или записи. Это свойство определяет, имеет ли данный поток доступ к чтению и (или) записи на физических носителях.
  • Текст или двоичный код. Потоки, как считается, представляют собой набор текстовых строк, каждая из которых заканчивается символом новой строки. В зависимости от среды, в которой приложение запускается, символы новой строки могут отличаться, поэтому возникает необходимость адаптировать некоторые специальные символы в текстовом файле, согласно спецификациям используемой системы. С другой стороны, двоичный поток — это последовательность символов, записываемая или считываемая из физической среды без всякого преобразования данных.
  • Буфер временного хранения данных. Буфер блока памяти, где данные накапливаются, прежде чем физически считываются или записываются на соответствующий файл или устройство. Потоки могут быть либо с полной буферизацией, или без буферизации. Если полная буферизация, то данные чтения/записи физически переносятся или изменяются, когда буфер заполняется. Буфер считается заполненным, если в поток попадает символ новой строки. Небуферизованные потоки символов, также предназначенные для чтения/записи, но буферизация в них выполняется, по возможности, как можно скорее.

Индикаторы потоков ввода/вывода

Потоки имеют определенные внутренние показатели, которые определяют их текущее состояние и которые влияют на поведение некоторых операций ввода:

  • Индикатор ошибки. Этот индикатор сигнализирует о том, что произошла ошибка в ходе выполнения операции, связанной с потоком. Этот показатель может быть проверен функцией ferror , и может быть сброшен путем вызова функции clearerr или любой функцией позиционирования ( rewind , fseek и fsetpos ).
  • End-Of-File индикатор. Если данный индикатор сигнализирует о том, что последняя операция чтения или записи с потоком достигла конца файла. Это можно проверить с помощью функции feof . Данный индикатор может быть сброшен путем вызова функции clearerr или любой функцией позиционирования ( rewind , fseek и fsetpos ).
  • Индикатор положения. Это внутренний указатель каждого потока, который указывает на следующий символ, который должен быть считан или записан в следующей операции ввода/вывода. Его значение может быть получено функциями ftell и fgetpos .

Функции заголовочного файла cstdio

Помещает символ в поток и перемещает позицию индикатора текущего положения.

Макросы

EOF Макро-константа для определения конца файла.
FILENAME_MAX Максимально допустимая длинна имён файлов.
NULL Нулевой указатель.
TMP_MAX Минимальное количество временных файлов, которые можно создать.

А также _IOFBF , _IOLBF , _IONBF , BUFSIZ , FOPEN_MAX , L_tmpnam , SEEK_CUR , SEEK_END и SEEK_SET , каждый описан с соответствующей функцией.

Типы данных

FILE Этот тип данных определяет поток и содержит информацию, необходимую для управления потоком.
fpos_t Тип данных fpos_t хранит информацию для указания позиции в файле.
size_t Тип данных для представления количества байтов буфера или строки.

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 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 — структура, содержащая информацию о файле или текстовом потоке, необходимую для выполнения ее операций ввода и вывода операций, включая:
    • файловый дескриптор
    • текущую позицию в потоке
    • индикатор конца файла
    • индикатор ошибок
    • указатель на буфер потока, если возможно

    См. также

    • Поддержка больших файлов

    Примечания

    1. Brian Kernighan The UNIX Programming Environment. — Englewood Cliffs: Prentice Hall. — P. pg. 200.

    Ссылки

    • stdio.h — основные определения, The Single UNIX® Specification, выпуск 7 от The Open Group (англ.)

    Wikimedia Foundation . 2010 .

    Include stdio h что это

    stdio(3) библиотека функций стандартного ввода-вывода

    ОБЗОР

    #include FILE *stdin;
    FILE *stdout;
    FILE *stderr;

    ОПИСАНИЕ

    Библиотеки стандартного ввода-вывода предоставляют простой и эффективный интерфейс буферизируемого потока ввода-вывода. Ввод и вывод представляется логическим потоком данных, а физические характеристики ввода-вывода скрываются. Далее приводится список функций и макросов; более подробная информация находится в соответствующих страницах. Поток соотносится с внешним файлом (который также может быть физическим устройством) при открытии файла. Такое открытие может вызвать создание нового файла. Создание существующего файла вызовет потерю его содержимого. Если для файла поддерживаются запросы позиционирования (например для файла на диске, а не терминал), то индикатор позиции в файле, соответствующий потоку, устанавливается в начало файла (нулевой байт), если только файл не открыт в режиме добавления. Если используется режим добавления, то не определено, будет ли индикатор позиции в файле будет указывать на конец файла. Индикатор позиции изменяется при последующих запросах чтения, записи и изменения индикатора. Все операции ввода осуществляются так, как если бы все символы последовательно считывались вызовом функции fgetc(3); а вывод осуществляется, как если бы все символы последовательно записывались вызовом функции fputc(3). Соотношение потока с файлом прекращается при закрытии файла. Перед прекращением потоки вывода очищаются (flushed) (содержимое незаписанного буфера передаётся в системное окружение). Значение указателя на объект FILE после закрытия файла становится неопределённым (мусорным). Впоследствии файл может быть открыт ещё раз той же самой или другой программой, а его содержание может быть восстановлено или изменено (если можно перейти в его начало). Если основная функция завершает работу и возвращает значения своему родителю или если вызывается функция exit(3), то перед закрытием программы закрываются все открытые файлы (и, следовательно, очищаются все потоки вывода). Другие методы закрытия программ, например, abort(3), не всегда приводят к корректному закрытию файлов. При запуске программы предопределяются три текстовых потока, которые не следует открывать явно: стандартный ввод (standard input) (для чтения условного ввода), стандартный вывод (standard output) (для записи условного вывода) и стандартный поток ошибок (standard error) (для вывода диагностики). Сокращённые названия потоков: stdin, stdout и stderr. При открытии, стандартный поток ошибок буферизируется не полностью; стандартные потоки ввода и вывода полностью буферизируются только при условии, что они не ссылаются на какое-либо интерактивное устройство. Потоки вывода, ссылающиеся на устройства терминала, по умолчанию буферизируются построчно; ожидающие в таких потоках данные записываются автоматически всякий раз при чтении из потока ввода, ссылающегося на терминал. В случаях, когда после вывода на терминал части строки объём производимых вычислений велик, необходимо выполнять fflush(3), чтобы появилась часть строки до вычислений. Библиотека stdio является частью библиотеки libc, а функции автоматически загружаются компиляторами cc(1) и pc(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 существуют версии в виде функций, которые используются если определения макросов были удалены явно.

    Список функций

    Функция Описание
    clearerr проверяет и сбрасывает состояние потока
    fclose закрывает поток
    fdopen функции открытия потока
    feof проверяет и сбрасывает состояние потока
    ferror проверяет и сбрасывает состояние потока
    fflush сбрасывает данные потока
    fgetc считывает следующий символ или слово из потока ввода
    fgetpos считывает позицию в потоке
    fgets считывает строку из потока
    fileno возвращает целочисленный дескриптор аргумента потока
    fopen функции открытия потока
    fprintf вывод по формату
    fpurge сбрасывает данные потока
    fputc выводит символ и слово в поток
    fputs выводит строку в поток
    fread считывает двоичные данные из потока ввода-вывода
    freopen функции открытия потока
    fscanf форматирует ввод
    fseek устанавливает позицию в потоке
    fsetpos устанавливает позицию в потоке
    ftell устанавливает позицию в потоке
    fwrite записывает двоичные данные потока ввода-вывода
    getc считывает следующий символ или слово из потока ввода
    getchar считывает следующий символ или слово из потока ввода
    gets считывает строку из потока
    getw считывает следующий символ или слово из потока ввода
    mktemp создаёт имя временного файла (уникальное)
    perror системные сообщения об ошибках
    printf вывод по формату
    putc выводит символ или слово в поток
    putchar выводит символ и слово в поток
    puts выводит строку в поток
    putw выводит символ и слово в поток
    remove удаляет запись из каталога
    rewind устанавливает позицию в потоке
    scanf форматирует ввод
    setbuf операции буферизации потока
    setbuffer операции буферизации потока
    setlinebuf операции буферизации потока
    setvbuf операции буферизации потока
    sprintf вывод по формату
    sscanf форматирует ввод
    strerror системные сообщения об ошибках
    sys_errlist системные сообщения об ошибках
    sys_nerr системные сообщения об ошибках
    tempnam процедуры с временными файлами
    tmpfile процедуры с временными файлами
    tmpnam процедуры с временными файлами
    ungetc возвращает символ в поток ввода
    vfprintf вывод по формату
    vfscanf форматирует ввод
    vprintf вывод по формату
    vscanf форматирует ввод
    vsprintf вывод по формату
    vsscanf форматирует ввод

    СООТВЕТСТВИЕ СТАНДАРТАМ

    Библиотека stdio соответствует C89.

    stdio.h

    stdio.h (от англ. standard input/output header — стандартный заголовочный файл ввода-вывода) заголовочный файл стандартной библиотеки языка Си, содержащий определения макросов, константы и объявления функций и типов, используемых для различных операций стандартного ввода и вывода. Функциональность унаследована от «портативного пакета ввода-вывода» («portable I/O package»), написанного Майком Леском из Bell Labs в начале 1970-х. C++ ради совместимости также использует stdio.h наряду со схожим по функциональности заголовочным файлом cstdio.

    Функции, объявленные в stdio.h, являются весьма популярными благодаря тому, что, являясь частью Стандартной библиотеки языка Си, они гарантируют работу на любой платформе, поддерживающей Си. Приложения на отдельных платформах могут, тем не менее, иметь причины для использования функций ввода-вывода самой платформы вместо функций stdio.h.

    Стандарт определяет такое понятие, как поток — последовательный набор информации, который может быть входным или выходным, может быть предоставлен как файлом, так и устройством (например, терминалом). Поток может быть текстовым или бинарным. Текстовый поток — последовательность символов. При этом термин «символ» в данном контексте может означать как читаемый символ, так и управляющий символ (например, символ вертикальной табуляции или символ конца файла). Символы в текстовом потоке объединяются в строки. Каждая строка заканчивается символом новой строки либо символом конца файла. Бинарный поток — последовательность байтов, которые могут прозрачно представлять любую информацию (в том числе и текст). Поток может быть в одном из трёх состояний: неориентированном (по умолчанию), «широко символьном» или битовым. Состояние определяется последней функцией, которая использовала этот поток.

    Пример использования

    Все функции в языке Си (и его многочисленных разновидностях) объявляются в заголовочных файлах. Таким образом, программистам приходится подключать файл stdio.h к исходному коду, чтобы использовать функции, объявленные в нём.

    #include int main(void)

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

    Функции

    Функции, объявленные в stdio.h, в общем случае могут быть разделены на две категории: функции для операций с файлами и функции для операций ввода-вывода.

    Константы

    В заголовочном файле stdio.h определены следующие константы:

    Переменные

    Следующие переменные определены в заголовочном файле stdio.h:

    Типы

    Типы данных, определённые в заголовочном файле stdio.h, содержат:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *