Ввод-вывод файлов
Заголовочный файл <stdio.h> предоставляет поддержку общих файловых операций и функции для ввода-вывода узких символов.
Заголовочный файл <wchar.h> предоставляет функции для ввода-вывода широких символов.
Потоки ввода-вывода представлены объектами типа FILE, к которым можно обращаться и которые можно изменять только через указатели типа FILE*. Каждый поток связан с внешним физическим устройством (файлом, стандартным потоком ввода, принтером, последовательным портом и т. д.).
Типы
Определён в заголовочном файле <stdio.h> |
|
|---|---|
| тип объекта, способного хранить всю информацию, необходимую для управления потоком ввода-вывода C (typedef) |
|
| полный тип объекта, не являющегося массивом, способного однозначно задавать позицию и состояние разбора многобайтовых символов в файле (typedef) |
|
Предопределённые стандартные потоки
Определены в заголовочном файле <stdio.h> |
|
|---|---|
| выражение типа FILE*, связанное с потоком ввода выражение типа FILE*, связанное с потоком вывода выражение типа FILE*, связанное с потоком вывода ошибок (макроконстанта) |
|
Функции
Доступ к файлам |
|
Определены в заголовочном файле <stdio.h> |
|
|---|---|
|
(C11) | открывает файл (функция) |
|
(C11) | открывает существующий поток под другим именем (функция) |
| закрывает файл (функция) |
|
| синхронизирует поток вывода с фактическим файлом (функция) |
|
| задаёт буфер для файлового потока (функция) |
|
| задаёт буфер и его размер для файлового потока (функция) |
|
Определена в заголовочном файле <wchar.h> |
|
|
(C95) | переключает файловый поток между вводом-выводом широких и узких символов (функция) |
Прямой ввод-вывод |
|
Определены в заголовочном файле <stdio.h> |
|
| читает из файла (функция) |
|
| записывает в файл (функция) |
|
Неформатированный ввод-вывод |
|
Узкие символы |
|
Определены в заголовочном файле <stdio.h> |
|
| получает символ из файлового потока (функция) |
|
| получает строку символов из файлового потока (функция) |
|
| записывает символ в файловый поток (функция) |
|
| записывает строку символов в файловый поток (функция) |
|
читает символ из stdin (функция) |
|
|
(удалена в C11)(C11) | читает строку символов из stdin (функция) |
записывает символ в stdout (функция) |
|
записывает строку символов в stdout (функция) |
|
| возвращает символ в файловый поток (функция) |
|
Широкие символы |
|
Определены в заголовочном файле <wchar.h> |
|
|
(C95) | получает широкий символ из файлового потока (функция) |
|
(C95) | получает строку широких символов из файлового потока (функция) |
|
(C95) | записывает широкий символ в файловый поток (функция) |
|
(C95) | записывает строку широких символов в файловый поток (функция) |
|
(C95) | читает широкий символ из stdin (функция) |
|
(C95) | записывает широкий символ в stdout (функция) |
|
(C95) | возвращает широкий символ в файловый поток (функция) |
Форматированный ввод-вывод |
|
Узкие символы |
|
Определены в заголовочном файле <stdio.h> |
|
|
(C11)(C11)(C11) | читает форматированный ввод из stdin, файлового потока или буфера (функция) |
|
(C99)(C99)(C99)(C11)(C11)(C11) | читает форматированный ввод из stdin, файлового потока или буферас использованием списка переменного числа аргументов (функция) |
|
(C99)(C11)(C11)(C11)(C11) | выводит форматированные данные в stdout, файловый поток или буфер (функция) |
|
(C99)(C11)(C11)(C11)(C11) | выводит форматированные данные в stdout, файловый поток или буферс использованием списка переменного числа аргументов (функция) |
Широкие символы |
|
Определены в заголовочном файле <wchar.h> |
|
|
(C95)(C95)(C95)(C11)(C11)(C11) | читает форматированный ввод широких символов из stdin, файлового потока или буфера (функция) |
|
(C99)(C99)(C99)(C11)(C11)(C11) | читает форматированный ввод широких символов из stdin, файлового потокаили буфера с использованием списка переменного числа аргументов (функция) |
|
(C95)(C95)(C95)(C11)(C11)(C11)(C11) | выводит форматированные данные широких символов в stdout, файловый поток или буфер (функция) |
|
(C95)(C95)(C95)(C11)(C11)(C11)(C11) | выводит форматированные данные широких символов в stdout, файловый потокили буфер с использованием списка переменного числа аргументов (функция) |
Позиционирование в файле |
|
Определены в заголовочном файле <stdio.h> |
|
| возвращает текущее значение индикатора позиции файла (функция) |
|
| получает значение индикатора позиции файла (функция) |
|
| перемещает индикатор позиции файла в заданное место файла (функция) |
|
| перемещает индикатор позиции файла в заданное место файла (функция) |
|
| перемещает индикатор позиции файла в начало файла (функция) |
|
Обработка ошибок |
|
Определены в заголовочном файле <stdio.h> |
|
| сбрасывает признаки ошибок (функция) |
|
| проверяет достижение конца файла (функция) |
|
| проверяет наличие ошибки файла (функция) |
|
выводит строку символов, соответствующую текущей ошибке, в stderr (функция) |
|
Операции с файлами |
|
Определены в заголовочном файле <stdio.h> |
|
| удаляет файл (функция) |
|
| переименовывает файл (функция) |
|
|
(C11) | возвращает указатель на временный файл (функция) |
|
(C11) | возвращает уникальное имя файла (функция) |
Макроконстанты
Определены в заголовочном файле <stdio.h> |
|
|---|---|
|
EOF | целочисленное константное выражение типа int с отрицательным значением (макроконстанта) |
|
FOPEN_MAX | максимальное количество файлов, которые могут быть одновременно открыты (макроконстанта) |
|
FILENAME_MAX | размер массива char, необходимого для хранения самого длинного поддерживаемого имени файла (макроконстанта) |
|
_PRINTF_NAN_LEN_MAX
(C23) | максимальное количество символов, выводимых для любого значения NaN (возможно, с отрицательным знаком) (макроконстанта) |
|
BUFSIZ | размер буфера, используемого setbuf (макроконстанта) |
|
_IOFBF_IOLBF_IONBF | задаёт режим буферизации (полная буферизация / построчная буферизация / без буферизации) для setvbuf (макроконстанта) |
|
SEEK_SETSEEK_CURSEEK_END | задаёт начало отсчёта смещения (начало / текущая позиция / конец) для fseek (макроконстанта) |
|
TMP_MAXTMP_MAX_S
(C11) | максимальное количество уникальных имён файлов, которые могут быть сгенерированы с помощью tmpnam / tmpnam_s (макроконстанта) |
|
L_tmpnamL_tmpnam_s
(C11) | размер массива char, необходимого для хранения результата tmpnam / tmpnam_s (макроконстанта) |
Ссылки
- Стандарт C23 (ISO/IEC 9899:2024):
- 7.21 Ввод-вывод <stdio.h> (стр.: TBD)
- 7.29 Расширенные средства для многобайтовых символов и широких символов <wchar.h> (стр.: TBD)
- 7.31.11 Ввод-вывод <stdio.h> (стр.: TBD)
- 7.31.16 Расширенные средства для многобайтовых символов и широких символов <wchar.h> (стр.: TBD)
- K.3.5 Ввод-вывод <stdio.h> (стр.: TBD)
- Стандарт C17 (ISO/IEC 9899:2018):
- 7.21 Ввод-вывод <stdio.h> (стр.: TBD)
- 7.29 Расширенные средства для многобайтовых символов и широких символов <wchar.h> (стр.: TBD)
- 7.31.11 Ввод-вывод <stdio.h> (стр.: TBD)
- 7.31.16 Расширенные средства для многобайтовых символов и широких символов <wchar.h> (стр.: TBD)
- K.3.5 Ввод-вывод <stdio.h> (стр.: TBD)
- Стандарт C11 (ISO/IEC 9899:2011):
- 7.21 Ввод-вывод <stdio.h> (стр.: 296-339)
- 7.29 Расширенные средства для многобайтовых символов и широких символов <wchar.h> (стр.: 402-446)
- 7.31.11 Ввод-вывод <stdio.h> (стр.: 456)
- 7.31.16 Расширенные средства для многобайтовых символов и широких символов <wchar.h> (стр.: 456)
- K.3.5 Ввод-вывод <stdio.h> (стр.: 586-603)
- Стандарт C99 (ISO/IEC 9899:1999):
- 7.19 Ввод-вывод <stdio.h> (стр.: 262-305)
- 7.24 Расширенные средства для многобайтовых символов и широких символов <wchar.h> (стр.: 348-392)
- 7.26.9 Ввод-вывод <stdio.h> (стр.: 402)
- 7.26.12 Расширенные средства для многобайтовых символов и широких символов <wchar.h> (стр.: 402)
- Стандарт C89/C90 (ISO/IEC 9899:1990):
- 4.9 ВВОД-ВЫВОД <stdio.h>
- 4.13.6 Ввод-вывод <stdio.h>
См. также
| Документация по C++ для ввода-вывода файлов в стиле C |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/c/io