Потоковый ввод-вывод
Эти функции обрабатывают данные различных размеров и форматов, — от одного символа до больших структур данных. Они также предоставляют возможность буферизации, которая может повысить производительность. Размер буфера потока по умолчанию составляет 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 , fscanf_s , _fscanf_s_l , fwscanf_s , _fwscanf_s_l |
Считывание форматированных данных из потока |
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 , _snprintf_s , _snprintf_s_l , _snwprintf_s , _snwprintf_s_l |
Запись форматированных данных указанной длины в строку |
_snscanf , _snwscanf , _snscanf_s , _snscanf_s_l , _snwscanf_s , _snwscanf_s_l |
Считывают форматированные данные указанной длины из стандартного входного потока. |
sprintf , swprintf , sprintf_s , _sprintf_s_l , swprintf_s , _swprintf_s_l |
Запись форматированных данных в строку |
sscanf , , swscanf sscanf_s _sscanf_s_l, swscanf_s _swscanf_s_l |
Считывание форматированных данных из строки |
_tempnam , _wtempnam |
Создание временного имени файла в заданном каталоге |
tmpfile , tmpfile_s |
Создание временного файла |
tmpnam , _wtmpnam , tmpnam_s , _wtmpnam_s |
Создание временного имени файла |
ungetc , ungetwc |
Отправка символа обратно в поток |
_vcprintf , _vcwprintf , _vcprintf_s , _vcprintf_s_l , _vcwprintf_s , _vcwprintf_s_l |
Вывод форматированных данных на консоль |
vfprintf , vfwprintf , vfprintf_s , _vfprintf_s_l , vfwprintf_s , _vfwprintf_s_l |
Запись форматированных данных в поток |
vprintf , vwprintf , vprintf_s , _vprintf_s_l , vwprintf_s , _vwprintf_s_l |
Запись форматированных данных в stdout |
_vsnprintf , _vsnwprintf , vsnprintf_s , _vsnprintf_s , _vsnprintf_s_l , _vsnwprintf_s , _vsnwprintf_s_l |
Запись форматированных данных указанной длины в буфер |
vsprintf , vswprintf , vsprintf_s , _vsprintf_s_l , vswprintf_s , _vswprintf_s_l |
Запись форматированных данных в буфер |
Когда программа начинает выполнение, код запуска автоматически открывает несколько потоков: стандартный ввода (на который указывает stdin
), стандартный вывода (на который указывает stdout
) и стандартный вывода ошибок (на который указывает stderr
). Эти потоки по умолчанию направляются на консоль (клавиатуру и экран). С помощью freopen
можно перенаправить stdin
, stdout
или stderr
на файл на диске или на устройство.
Файлы, открытые с помощью потоковых подпрограмм, по умолчанию буферизуются. stderr
Функции stdout
удаляются всякий раз, когда они заполнены или, если вы записываете на символьное устройство после каждого вызова библиотеки. Если программа завершается аварийно, буферы вывода могут не быть сброшены, что приводит к потере данных. Используйте fflush
или _flushall
убедитесь, что буфер, связанный с указанным файлом, удаляется в операционную систему или все открытые буферы удаляются. Операционная система может кэшировать данные перед записью на диск. Функция фиксации на диск гарантирует, что содержимое буфера с очисткой не будет потеряно, если произошел сбой системы.
Существует два способа сохранить зафиксировать содержимое буфера на диске:
Скомпоновать код с файлом COMMODE.OBJ, чтобы установить глобальный флаг фиксации. По умолчанию этот глобальный флаг имеет значение
n
, т. е. "не фиксировать".Установите флаг режима в
c
с помощьюfopen
или_fdopen
.
Любой файл, открытый с флагом c
или n
, ведет себя в соответствии со значением флага, вне зависимости от состояния глобального флага фиксации.
Если программа не закрывает поток явным образом, поток автоматически закрывается при завершении программы. Следует, однако, закрывать поток, когда программа завершает работу с ним, так как количество потоков, которые могут одновременно быть открыты, ограничено. Дополнительные сведения об этом ограничении см _setmaxstdio
. в этой статье.
Ввод может следовать сразу за выводом только с промежуточным вызовом fflush
или функции позиционирования в файле (fseek
, fsetpos
или rewind
). За входными данными можно следовать без промежуточного вызова функции размещения файлов, если входная операция встречает конец файла.
См. также
Входные и выходные данные
Универсальные подпрограммы среды выполнения C по категориям
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по