Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Эти функции обрабатывают данные различных размеров и форматов, — от одного символа до больших структур данных. Они также предоставляют возможность буферизации, которая может повысить производительность. Размер буфера потока по умолчанию составляет 4 КБ. Эти подпрограммы влияют только на буферы, созданные подпрограммами библиотеки времени выполнения, и не затрагивают буферы, созданные операционной системой.
Подпрограммы потокового ввода-вывода
Маршрут | Использование |
---|---|
clearerr , clearerr_s |
Очистка индикатора ошибки для потока |
fclose |
Закрытие потока |
_fcloseall |
Закрытие всех открытых потоков, кроме stdin , stdout и stderr |
_fdopen , wfdopen |
Связывание потока с дескриптором открытого файла |
feof |
Проверка файла или потока на предмет конца |
ferror |
Проверка на наличие ошибки в потоке |
fflush |
Сброс потока в буфер или на запоминающее устройство |
fgetc , fgetwc |
Считывание символа из потока (функциональные версии getc и getwc ) |
_fgetchar , _fgetwchar |
Считать символ из stdin (функциональные версии getchar и getwchar ) |
fgetpos |
Получение индикатора позиции потока |
fgets , fgetws |
Считывание строки из потока |
_fileno |
Получение дескриптора файла, связанного с потоком |
_flushall |
Сброс всех потоков в буфер или запоминающее устройство |
fopen , , _wfopen fopen_s _wfopen_s |
Открытие потока |
fprintf , _fprintf_l , fwprintf _fwprintf_l fprintf_s _fprintf_s_l fwprintf_s _fwprintf_s_l |
Запись форматированных данных в поток |
fputc , fputwc |
Запись символа в поток (функциональные версии putc и putwc ) |
_fputchar , _fputwchar |
Запись символа в stdout (функциональные версии putchar и putwchar ) |
fputs , fputws |
Запись строки в поток |
fread |
Считывание неформатированных данных из потока |
freopen , , _wfreopen freopen_s _wfreopen_s |
Переназначение потокового указателя FILE , чтобы он указывал на новый файл или устройство |
fscanf
fwscanf
|
Считывание форматированных данных из потока |
fseek , _fseeki64 |
Перемещение позиции в файле в заданное место |
fsetpos |
Задание индикатора позиции в потоке |
_fsopen , _wfsopen |
Открытие потока с совместным доступом к файлу |
ftell , _ftelli64 |
Получение текущей позиции в файле |
fwrite |
Запись неформатированных элементов данных в поток |
getc , getwc |
Считывание символа из потока (версии-макросы fgetc и fgetwc ) |
getchar , getwchar |
Считывание символа из stdin (версии-макросы fgetchar и fgetwchar ) |
_getmaxstdio |
Возвращает количество одновременно открытых файлов, допустимое на уровне потокового ввода-вывода. |
gets_s , _getws_s |
Считывание строки из stdin |
_getw |
Считывание двоичного числа int из потока |
printf , _printf_l , wprintf _wprintf_l printf_s _printf_s_l wprintf_s _wprintf_s_l |
Запись форматированных данных в stdout |
putc , putwc |
Запись символа в поток (версии-макросы fputc и fputwc ) |
putchar , putwchar |
Запись символа в stdout (версии-макросы fputchar и fputwchar ) |
puts , _putws |
Запись строки в поток |
_putw |
Запись двоичного числа int в поток |
rewind |
Перемещение позиции в файле в начало потока |
_rmtmp |
Удаление временных файлов, созданных tmpfile |
scanf , _scanf_l , wscanf _wscanf_l scanf_s _scanf_s_l wscanf_s _wscanf_s_l |
Считывание форматированных данных из stdin |
setbuf |
Управление потоковой буферизацией |
_setmaxstdio |
Задание максимального числа одновременно открытых файлов на уровне потокового ввода-вывода |
setvbuf |
Управление потоковой буферизацией и размером буфера |
_snprintf
_snwprintf
|
Запись форматированных данных указанной длины в строку |
_snscanf
_snwscanf
|
Считывают форматированные данные указанной длины из стандартного входного потока. |
sprintf
swprintf
|
Запись форматированных данных в строку |
sscanf
swscanf
|
Считывание форматированных данных из строки |
_tempnam , _wtempnam |
Создание временного имени файла в заданном каталоге |
tmpfile , tmpfile_s |
Создание временного файла |
tmpnam , , _wtmpnam tmpnam_s _wtmpnam_s |
Создание временного имени файла |
ungetc , ungetwc |
Отправка символа обратно в поток |
_vcprintf
_vcwprintf
|
Вывод форматированных данных на консоль |
vfprintf
vfwprintf
|
Запись форматированных данных в поток |
vprintf
vwprintf
|
Запись форматированных данных в stdout |
_vsnprintf
|
Запись форматированных данных указанной длины в буфер |
vsprintf
vswprintf
|
Запись форматированных данных в буфер |
Когда программа начинает выполнение, код запуска автоматически открывает несколько потоков: стандартный ввода (на который указывает stdin
), стандартный вывода (на который указывает stdout
) и стандартный вывода ошибок (на который указывает stderr
). Эти потоки по умолчанию направляются на консоль (клавиатуру и экран). С помощью freopen
можно перенаправить stdin
, stdout
или stderr
на файл на диске или на устройство.
Файлы, открытые с помощью потоковых подпрограмм, по умолчанию буферизуются.
stdout
Функции stderr
удаляются всякий раз, когда они заполнены или, если вы записываете на символьное устройство после каждого вызова библиотеки. Если программа завершается аварийно, буферы вывода могут не быть сброшены, что приводит к потере данных. Используйте fflush
или _flushall
убедитесь, что буфер, связанный с указанным файлом, удаляется в операционную систему или все открытые буферы удаляются. Операционная система может кэшировать данные перед записью на диск. Функция фиксации на диск гарантирует, что содержимое буфера с очисткой не будет потеряно, если произошел сбой системы.
Существует два способа сохранить зафиксировать содержимое буфера на диске:
- Скомпоновать код с файлом COMMODE.OBJ, чтобы установить глобальный флаг фиксации. По умолчанию этот глобальный флаг имеет значение
n
, т. е. "не фиксировать". - Установите флаг режима в
c
с помощьюfopen
или_fdopen
.
Любой файл, открытый с флагом c
или n
, ведет себя в соответствии со значением флага, вне зависимости от состояния глобального флага фиксации.
Если программа не закрывает поток явным образом, поток автоматически закрывается при завершении программы. Следует, однако, закрывать поток, когда программа завершает работу с ним, так как количество потоков, которые могут одновременно быть открыты, ограничено. Дополнительные сведения об этом ограничении см _setmaxstdio
. в этой статье.
Ввод может следовать сразу за выводом только с промежуточным вызовом fflush
или функции позиционирования в файле (fseek
, fsetpos
или rewind
). За входными данными можно следовать без промежуточного вызова функции размещения файлов, если входная операция встречает конец файла.
См. также
Входные и выходные данные
Универсальные подпрограммы среды выполнения C по категориям