<cstdio>
头文件 (stdio.h)
执行输入/输出操作的C库
输入和输出操作也可以在c++中使用C标准输入和输出库(cstdio,在C语言中称为stdio.h)执行。
这个库使用流来操作物理设备,如键盘、打印机、终端或系统支持的任何其他类型的文件。
流是一种以统一方式与它们交互的抽象;所有流都具有类似的属性,独立于它们所关联的物理媒体的单个特性。
流在cstdio库中被作为指向文件对象的指针进行处理。指向
FILE对象的指针唯一地标识一个流,
并在涉及该流的操作中用作参数。
有三个标准流:
stdin、
stdout
和
stderr,它们会自动创建并为使用库的所有程序打开。
☞ Streams属性
Streams有一些属性,这些属性定义了可以对它们使用哪些函数以及它们将如何处理通过它们输入或输出的数据。
大多数这些属性是在使用
fopen函数将流与文件(打开)关联时定义的.
Read/Write 访问
指定流是否具有对与其关联的物理媒体的读或写访问权限(或两者).
文本 / 二进制
文本流被认为代表一组文本行,每一行以换行符结尾。
根据应用程序运行的环境,文本流可能会发生一些字符转换,
以使某些特殊字符适应环境的文本文件规范。
另一方面,二进制流是从物理媒体写入或读取的字符序列,不需要转换,
与读或写到流的字符有一一对应关系。
缓冲区
缓冲区是一块内存,数据在被物理读取或写入相关文件或设备之前暂存在其中。
流可以是完全缓冲的、行缓冲的或无缓冲的。
在完全缓冲的流上,当缓冲区被填满时读取/写入数据,在行缓冲流上,当遇到换行符时会读取/写入数据,
而在未缓冲的流上,字符即时读取/写入.
定位
在打开时,流是不确定的。
一旦对它们执行输入/输出操作,它们就变成面向单字节的或面向多字节的,
这取决于所执行的操作.
(通常,在<cstdio> 中定义的函数是面向单字节的,
而在<
cwchar> 中定义的函数是面向多字节的)更多信息请参见
cwchar。
☞ 标志
流具有特定的内部指示器来指定它们的当前状态,并影响对其执行的一些输入和输出操作的行为:
错误指示器
当与流相关的操作发生错误时设置此指示器。
这个指示器可以用
ferror函数来检查,
也可以通过调用
clearerr、
freopen
或
rewind来重置。
文件结束指示器
当设置此标志时,表示对流执行的读或写操作到达文件结束位置。
它可以用
feof函数检查,
也可以通过调用
clearerr
或
freopen或调用任何重新定位函数
(
rewind,
fseek
和
fsetpos)来重置。
位置指示器
它是流的内部指针,指向下一次I/O操作中要读或写的下一个字符。
它的值可以通过
ftell
和
fgetpos函数获得,
也可以通过重新定位函数
rewind,
fseek
和
fsetpos来改变。
☞ 函数
文件操作:
文件访问:
格式化输入/输出
fscanf |
从流中读取格式化数据 (function ) |
fprintf |
将格式化数据写入流(function ) |
printf |
将格式化数据打印到标准输出(function ) |
scanf |
从标准输入读取格式化数据(function ) |
snprintf |
将格式化输出写入指定规格的缓冲区(function ) |
sprintf |
将格式化数据写入字符串(function ) |
sscanf |
从字符串中读取格式化数据(function ) |
vfprintf |
使用参数列表发送格式化数据输出到流中(function ) |
vfscanf |
从流中读取格式化数据到变量参数列表(function ) |
vprintf |
将格式化数据从变量参数列表打印到标准输出(function ) |
vscanf |
将格式化数据读入可变参数列表(function ) |
vsnprintf |
将格式化数据从可变参数列表写入指定规格的缓冲(function ) |
vsprintf |
将变量参数列表中的格式化数据写入字符串(function ) |
vsscanf |
从字符串中读取格式化数据到变量参数列表(function ) |
字符输入/输出:
fgetc |
从流中获取字符 (function ) |
fgets |
从流中获取字符串(function ) |
fputc |
将字符写入流(function ) |
fputs |
将字符串写入流(function ) |
getc |
从流中获取字符(function ) |
getchar |
从标准输入获取字符(function ) |
gets |
从标准输入获取字符串(function ) |
putc |
将字符写入流(function ) |
putchar |
将字符写入标准输出(function ) |
puts |
将字符串写入标准输出(function ) |
ungetc |
取消从流中获取字符(function ) |
块输入/输出:
文件定位:
错误处理:
☞ 宏
另:
_IOFBF, _IOLBF, _IONBF (用来设置
setvbuf)
SEEK_CUR, SEEK_END 以及 SEEK_SET (用来设置
fseek)
☣ 类型
☣ 对象(object)