C++官网参考链接:https://cplusplus.com/reference/cstdio/
头文件
<cstdio> (stdio.h)
C库执行输入/输出操作
输入和输出操作也可以在C++中使用C标准输入和输出库(cstdio,在C语言中称为stdio.h)来执行。这个库使用所谓的流来操作物理设备,如键盘、打印机、终端或系统支持的任何其他的文件类型。流是以统一的方式与这些交互的抽象;所有流都具有类似的属性,独立于它们所关联的物理媒体的单个特征。
流在cstdio库中作为指向FILE对象的指针进行处理。指向FILE对象的指针唯一地标识一个流,并在涉及该流的操作中用作形参。
还有三种标准流:stdin,stdout和stderr,它们会自动创建并为使用标准库的所有程序打开。
流属性
流具有一些属性,这些属性定义了可以在它们上使用哪些函数,以及这些函数将如何处理通过它们输入或输出的数据。这些属性中的大多数都是在使用fopen函数将流与文件(打开)关联时定义的:
读/写访问
指定流是否具有对其关联的物理媒体的读或写访问权(或两者都有)。
文本/二进制
文本流被认为代表一组文本行,每一行以一个换行字符结束。根据运行应用程序的环境,文本流可能会发生一些字符转换,以使某些特殊字符适应环境的文本文件规范。另一方面,二进制流是从物理媒体中写入或读取的字符序列,无需转换,与读取或写入流的字符具有一一对应关系。
缓冲
缓冲区是一个内存块,在对相关文件或设备进行物理读写之前,在这里积累数据。流可以是完全缓冲的,行缓冲的或无缓冲的。在完全缓冲的流上,数据在缓冲区被填满时被读/写,在行缓冲流上,这发生在遇到换行字符时,而在无缓冲流上,字符被尽可能快地读/写。
方向
在打开时,流没有方向。一旦对它们执行了输入/输出操作,它们就会变成面向字节或面向宽字符的,这取决于所执行的操作(通常,<cstdio>中定义的函数是面向字节的,而<cwchar>中定义的函数是面向宽字符的)。更多信息请参见cwchar。
指示符
流有特定的内部指示符,用于指定它们的当前状态,并影响对它们执行的某些输入和输出操作的行为:
错误指示符
当与流相关的操作发生错误时设置此指示符。这个指示符可以用ferror函数检查,并且可以通过调用clearerr,freopen或rewind来重置。
文件结束指示符
设置此值时,表示对流执行的最后一次读写操作已到达文件结束。它可以用feof函数检查,并可以通过调用clearerr或freopen或调用任何重新定位函数(rewind,fseek和fsetpos)来重置。
位置指示符
它是每个流的内部指针,指向下一个I/O操作中要读或写的字符。它的值可以通过ftell和fgetpos函数获得,并可以通过重新定位函数rewind,fseek和fsetpos进行更改。
函数
在文件上的操作:
remove Remove file (function) (删除文件(函数))
rename Rename file (function) (重命名文件(函数))
tmpfile Open a temporary file (function) (打开一个临时文件(函数))
tmpnam Generate temporary filename (function) (生成临时文件名(函数))
文件访问:
fclose Close file (function) (关闭文件(函数))
fflush Flush stream (function) (刷新流(函数))
fopen Open file (function) (打开文件(函数))
freopen Reopen stream with different file or mode (function) (用不同的文件或模式重打开流(函数))
setbuf Set stream buffer (function) (设置流缓冲区(函数))
setvbuf Change stream buffering (function) (改变流缓冲(函数))
格式化输入/输出:
fprintf Write formatted data to stream (function) (写格式化数据到流(函数))
fscanf Read formatted data from stream (function) (从流读格式化数据(函数))
printf Print formatted data to stdout (function) (打印格式化数据到标准输出(函数))
scanf Read formatted data from stdin (function) (从标准输入读格式化数据(函数))
snprintf Write formatted output to sized buffer (function) (写格式化输出到一定大小的缓冲区(函数))
sprintf Write formatted data to string (function) (写格式化数据到字符串(函数))
sscanf Read formatted data from string (function) (从字符串读格式化数据(函数))
vfprintf Write formatted data from variable argument list to stream (function) (从可变实参列表写格式化数据到流(函数))
vfscanf Read formatted data from stream into variable argument list (function) (从流读格式化数据到可变实参列表(函数))
vprintf Print formatted data from variable argument list to stdout (function) (从可变实参列表打印格式化数据到标准输出(函数))
vscanf Read formatted data into variable argument list (function) (读格式化数据到可变实参列表(函数))
vsnprintf Write formatted data from variable argument list to sized buffer (function) (从可变实参列表写格式化数据到一定大小的缓冲区(函数))
vsprintf Write formatted data from variable argument list to string (function) (从可变实参列表写格式化数据到字符串(函数))
vsscanf Read formatted data from string into variable argument list (function) (从流读格式化数据到可变实参列表(函数))
字符输入/输出:
fgetc Get character from stream (function) (从流获取字符(函数))
fgets Get string from stream (function) (从流获取字符串(函数))
fputc Write character to stream (function) (写字符到流(函数))
fputs Write string to stream (function) (写字符串到流(函数))
getc Get character from stream (function) (从流获取字符(函数))
getchar Get character from stdin (function) (从标准输入获取字符(函数))
gets Get string from stdin (function) (从标准输入获取字符串(函数))
putc Write character to stream (function) (写字符到流(函数))
putchar Write character to stdout (function) (写字符到标准输出(函数))
puts Write string to stdout (function) (写字符串到标准输出(函数))
ungetc Unget character from stream (function) (从流中放回字符(函数))
直接输入/输出:
fread Read block of data from stream (function) (从流读数据块(函数))
fwrite Write block of data to stream (function) (写数据块到流(函数))
文件定位:
fgetpos Get current position in stream (function) (获取当前在流中的位置(函数))
fseek Reposition stream position indicator (function) (重新定位流位置指示符(函数))
fsetpos Set position indicator of stream (function) (设置流位置指示符(函数))
ftell Get current position in stream (function) (获取当前在流中的位置(函数))
rewind Set position of stream to the beginning (function) (设置流的位置到开始处(函数))
错误处理:
clearerr Clear error indicators (function) (清除错误指示符(函数))
feof Check end-of-file indicator (function) (检查文件结束指示符(函数))
ferror Check error indicator (function) (检查错误指示符(函数))
perror Print error message (function) (打印错误信息(函数))
宏
BUFSIZ Buffer size (constant) (缓冲区大小(常量))
EOF End-of-File (constant) (文件结束(常量))
FILENAME_MAX Maximum length of file names (constant) (最长文件名长度(常量))
FOPEN_MAX Potential limit of simultaneous open streams (constant) (同时打开的流的潜在限制(常量))
L_tmpnam Minimum length for temporary file name (constant) (对于临时文件名的最小长度(常量))
NULL Null pointer (macro) (空指针(宏))
TMP_MAX Number of temporary files (constant) (临时文件的数量(常量))
额外的: _IOFBF,_IOLBF,_IONBF(用于setvbuf)
和SEEK_CUR,SEEK_END和SEEK_SET(用于fseek)。
类型
FILE Object containing information to control a stream (type) (包含控制一个流信息的对象(类型))
fpos_t Object containing information to specify a position within a file (type) (包含指定在一个文件中的位置信息的对象(类型))
size_t Unsigned integral type (type) (无符号整数类型(类型))