头文件<cstdio>(stdio.h)
执行输入/输出操作的C++库
输入与输出操作在C++中也可以通过使用C标准输入输出库(cstdio,在C语言中为stdio.h)实现。该库使用所谓的“流“操作物理设备,如键盘、打印机、终端或系统支持的其它类型文件。流是与这些物理设备以统一方式交互的抽象概念。所有的流都具有独立于它们相关联的物理设备个体特性的相似属性。
流在cstdio库中以指向FILE对象的指向方式操作。一个指向FILE对象的指针唯一表示一个流,并且在设计该流的操作中作为参数使用。
存在三种标准流:stdin、stdout与stderr,它们自动为所有使用该库的程序公开创建。
流属性
流拥有一些属性,定义了哪些函数可以作用于它们与如何对待从它们输入或输出的数据。这些属性的绝大多数在通过fopen函数将该流与文件关联(opened)的时刻就已经定义了:
读/写访问
指定该流是否具有它们关联的物理媒体的读或写访问权限(或两者都有)。
文本/二进制
文本流被认为是表示一些列文本行,每一行以换行符结束。根据程序运行环境的不同,为了使一些特殊字符适应文本文件环境的特殊性,一些字符转换也许会发生。另一方面,二进制流是不经过任何转换写入物理媒介或从物理媒介读出的一系列字符,它们与从流中读出或写入流的字符一一对应。
缓存
混村是一个内存块,数据在从关联的文件或设备中读入或写入之前累计的地方。流可以是全缓存、行缓存或不缓存。对于全缓存流,数据当该流满了时读取/写入,对于行缓存流,发生在遇到换行符时,对于不缓存流字符立即被读取/写入。
定向
在打开时,流是没有定向的。当输入/输出操作作用在它们身上时,它们变成面向字节的或面向宽字节的,这取决于作用的操作符(通常定义在<cstdio>中的函数是面向字节的,然而定义在<cwchar>中的函数是面向宽字节的)。了解更多,查看cwchar。
指示器
流用于特定的内部指示器,它们表名它们的当前状态与哪些影响作用于它们身上的输入输出操作的行为:
错误指示符
该指示符当错误发生在相对于流的操作时设置。该指示器可以通过ferror函数检测,并且可以通过调用clearerr、freopen或rewind重设。
文件结束指示符
一旦设定,表明作用于该流上的下一个读或写操作到达文件结尾。它可以通过feof函数检测,并且可以通过调用clearerr、freopen或调用任何重定位函数(rewind,fseek与fsetpos)重设。
定位指示符
它是每个流的一个内部指针,它指向读或写向下一个I/O操作的下一个字符。它的值可以通过ftell或fgetpos函数获取,并且可以通过使用重定位函数rewind、fseek与fsetpos函数改变。
函数
操作文件:
remove | 删除文件(函数) |
rename | 重命名文件(函数) |
tmpfile | 打开一个临时文件(函数) |
tmpnam | 产生一个临时文件名(函数) |
文件访问:
fclose | 关闭文件(函数) |
fflush | 冲刷流(函数) |
fopen | 打开文件(函数) |
freopen | 用不同的文件或模式重新打开流(函数) |
setbuf | 设置流缓存(函数) |
servbuf | 改变流缓存(函数) |
格式化输入/输出:
fprintf | 将格式化数据写入流(函数) |
fscanf | 从流中读格式化数据(函数) |
printf | 打印格式化数据到stdout(函数) |
scanf | 从stdin中读格式化数据(函数) |
snprintf | 将格式化数据写入定长缓存(函数) |
sprintf | 写格式化数据到字符串(函数) |
sscanf | 从字符串中读格式化数据(函数) |
vfprintf | 将格式化数据从变参列表写入流(函数) |
vfscanf | 从流中读取格式化数据到变参列表(函数) |
vprintf | 打印变参列表中的格式化数据到stdout(函数) |
vscanf | 读取格式化数据到变参列表(函数) |
vsnprintf | 将变参列表中的格式化数据写入定长缓存(函数) |
vsprintf | 将变参列表中的格式化数据写入字符串(函数) |
vsscanf | 从字符串读取格式化数据到变参列表(函数) |
字符串输入/输出:
fgetc | 从流中获取字符(函数) |
fgets | 从流中获取字符串(函数) |
fputc | 将字符写入流(函数) |
fputs | 将字符串写入流(函数) |
getc | 从流中获取字符(函数) |
getchar | 从stdin中获取字符(函数) |
gets | 从stdin中获取字符串(函数) |
putc | 将字符写入流(函数) |
putchar | 将字符写入stdout(函数) |
puts | 将字符串写入stdout(函数) |
ungetc | 不从流中获取字符(函数) |
直接输入/输出:
fread | 从流中读取数据块(函数) |
fwrite | 将数据块写入流(函数) |
文件定位:
fgetpos | 从流中获取当前位置(函数) |
fseek | 重新定位流位置指示器(函数) |
fsetpos | 设置流位置指示器(函数) |
ftell | 获取流当前位置(函数) |
rewind | 设置流位置为开始处(函数) |
错误处理:
clearerr | 清除错误指示器(函数) |
feof | 检查文件结束指示器(函数) |
ferror | 检查错误指示器(函数) |
perror | 打印错误信息(函数) |
宏
BUFSIZE | 缓冲大小(常量) |
EOF | 文件结束(常量) |
FILENAME_MAX | 文件名的最大长度(常量) |
FOPEN_MAX | 连续打开流的潜在限制(常量) |
L_tmpnam | 临时文件名的最小长度(常量) |
NULL | null指针(宏) |
TMP_MAX | 临时文件数量(常量) |
SEEK_CUR、SEEK_END与SEEK_SET(用在fseek)。
类型
FILE | 包含控制流的信息的对象(类型) |
fpos_t | 包含在文件中指定位置的信息的对象(类型) |
size_t | 无符号整数类型(类型) |
英文原版:http://www.cplusplus.com/reference/cstdio/