头文件

<cstdio> (stdio.h)

C 语言的标准输入输出库,用于执行输入/输出操作。
C++ 也可以使用 **C** **St**andard **Input and **Output Library (cstdio,在 C 语言中称为stdio.h)执行输入输出操作。该库使用所谓的“流”来操作物理设备,例如键盘、打印机、终端或系统支持的任何其他类型的文件。流是一种抽象,可以以统一的方式与这些设备进行交互;所有流都具有相似的属性,而与它们关联的物理介质的特性无关。

cstdio库中,流被处理为 FILE 对象的指针。指向 FILE 对象的指针唯一标识一个流,并作为涉及该流的操作的参数。

还有三个标准流:stdinstdoutstderr,它们是使用该库的所有程序自动创建和打开的。

流的属性

流具有一些属性,这些属性定义了可以在其上使用的函数以及这些函数如何处理通过它们输入或输出的数据。其中大多数属性是在使用 fopen 函数将流与文件关联(打开)时定义的。
读/写访问
指定流是否对与其关联的物理介质具有读或写访问权限(或两者兼有)。
文本/二进制
文本流被认为是表示一组文本行,每行都以换行符结尾。根据应用程序运行的环境,文本流可能会发生某些字符转换,以使某些特殊字符适应该环境的文本文件规范。另一方面,二进制流是写入或从物理介质读取的字符序列,没有转换,与写入或从流读取的字符具有一对一的对应关系。
缓冲区
缓冲区是数据在被物理读取或写入关联文件或设备之前累积的内存块。流可以是“全缓冲”、“行缓冲”或“无缓冲”。对于全缓冲流,当缓冲区填满时会读取/写入数据;对于行缓冲流,这发生在遇到换行符时;对于无缓冲流,字符应尽快读取/写入。
方向性
打开时,流没有方向性。一旦在流上执行了输入/输出操作,它们就会变成“字节导向”或“宽导向”,具体取决于执行的操作(通常,在<cstdio>中定义的函数是“字节导向”的,而在 <cwchar> 中定义的函数是“宽导向”的)。有关更多信息,请参阅 cwchar

指示器

流具有某些内部指示器,用于指定它们的当前状态,并影响在它们上执行的某些输入和输出操作的行为。
错误指示器
在与流相关的操作中发生错误时设置此指示器。可以使用 ferror 函数检查此指示器,可以通过调用 clearerrfreopenrewind 来重置它。
文件结束指示器
设置时,表示使用流执行的最后一次读写操作已到达“文件结束”。可以使用 feof 函数检查它,可以通过调用 clearerrfreopen,或通过调用任何重新定位函数(rewindfseekfsetpos)来重置它。
位置指示器
它是每个流的一个内部指针,指向下一个 I/O 操作中要读取或写入的下一个字符。可以使用 ftellfgetpos 函数获取其值,并可以使用重新定位函数 rewindfseekfsetpos 来更改它。

函数

文件操作:

文件访问:

格式化输入/输出:

字符输入/输出:

直接输入/输出:

文件定位:

错误处理:

另外:_IOFBF_IOLBF_IONBF(与 setvbuf 一起使用)
SEEK_CURSEEK_ENDSEEK_SET(与 fseek 一起使用)。

类型