Потоковый ввод-вывод
Эти функции обрабатывают данные различных размеров и форматов, — от одного символа до больших структур данных. Они также предоставляют возможность буферизации, которая может повысить производительность. Размер буфера потока по умолчанию составляет 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_l fscanf_s 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_l _snprintf_s _snwprintf_s ,_snwprintf_s_l |
Запись форматированных данных указанной длины в строку |
_snscanf , , _snwscanf _snscanf_s_l _snscanf_s _snwscanf_s ,_snwscanf_s_l |
Считывают форматированные данные указанной длины из стандартного входного потока. |
sprintf , , swprintf _sprintf_s_l sprintf_s 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_l _vcprintf_s _vcwprintf_s ,_vcwprintf_s_l |
Вывод форматированных данных на консоль |
vfprintf , , vfwprintf _vfprintf_s_l vfprintf_s vfwprintf_s ,_vfwprintf_s_l |
Запись форматированных данных в поток |
vprintf , , vwprintf _vprintf_s_l vprintf_s vwprintf_s ,_vwprintf_s_l |
Запись форматированных данных в stdout |
_vsnprintf , _vsnwprintf , _vsnprintf_s_l vsnprintf_s _vsnprintf_s _vsnwprintf_s _vsnwprintf_s_l |
Запись форматированных данных указанной длины в буфер |
vsprintf , , vswprintf _vsprintf_s_l vsprintf_s 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 по категориям