名称
stdio - 标准输入/输出库函数
概要
#include <stdio.h>
FILE *stdin;
FILE *stdout;
FILE *stderr;
说明
标准I/O库提供了一套简单和高效的带缓冲流的I/O接口。输入和输出被映射成逻
辑数据流,隐藏了物理硬件的输入/输出功能。这些函数和宏在下面被列出,从它
们各自的man页面中可以获取到更多的信息。
在打开一个文件(也可以是一个物理设备)或者创建一个新文件的时候,一套缓冲
流就会与之关联。创建一个已存在的文件会导致它已有的内容丢失。如果一个文件
支持随机访问(比如硬盘里面的文件,而终端文件则不支持随机访问),那么除非
该文件以追加模式打开,否则文件位置偏移指针就会指向文件起始位置(从0开始)。
如果使用追加模式打开文件,那么文件位置偏移指针是指向文件起始位置还是文件
末尾是不确定的。一系列的读、写、位置偏移操作都会改变文件位置偏移指针。所
有的输入就跟连续调用fgetc函数读字符的效果一样,所有的输出就跟连续调用
fputc函数写字符的效果一样。
在关闭一个文件的时候,缓冲流跟文件的关联就会断开。在缓冲流跟文件断开关联
之前,输出缓冲流被冲刷(任何未写的内容都要传到目的地)。在文件被关闭之后,
指向文件对象的指针的值变得不确定(即这个指针变成了垃圾)。
一个文件可以被相同或者不同的程序同时打开多次,并且它的内容能被读取和修改。
如果main函数返回到它的上一级函数或者exit函数被调用,那么在程序退出之前,
所有打开的文件都会被关闭(所有的输出缓冲流被冲刷)。如果程序以其他方式退
出(比如abort),那么文件并不会被适当地关闭。
在一个程序启动的时候,有三个流是预定义的并且不需要显式地打开:标准输入(完
成常规的读),标准输出(完成常规的写),标准错误(完成错误输出)。这几个流
缩写为stdin,stdout,stderr。在打开的时候,stderr并不是全缓冲的,当且仅当
stdin和stdout不是指向一个交互式设备的时候才是全缓冲的。
默认情况下,指向终端设备的输出流总是行缓冲的。当读取终端设备的输入流时,
未完成的输出流总是被自动处理(冲刷)。当打印行缓冲的部分内容并做大量的数
据计算的时候,如果想在计算完成之前看到剩余内容的输出,则要在计算之前调用
fflush。
标准I/O库是libc库的一部分,并且在需要的时候cc编译器和pc编译器会自动
加载它们。概要指出了需要的头文件和变量。
下面是一些宏定义,如果要重新定义这些宏,则必须通过#undef取消它们当前的
定义:BUFSIZ,EOF,FILENAME_MAX,FOPEN_MAX,L_cuserid,L_ctermid,L_tmpnam,
NULL,SEEK_END,SEEK_SET,SEEK_CUR,TMP_MAX,clearerr,feof,ferror,fileno, getc,getchar,putc,putchar,stderr,stdin,stdout。
函数列表
函数 说明
-----------------------------------------------------------------
clearerr 检查和复位流的状态
fclose 关闭流
fdopen 打开流
feof 检查并复位流的状态
ferror 检查并复位流的状态
fflush 冲刷流
fgetc 从输入流获取下一个字符或字
fgetpos 定位流
fgets 从流获取一行
fileno 返回流的整形描述符
fopen 打开流
fprintf 输出格式化转换
fpurge 冲刷流
fputc 输出一个字符或字到流
fputs 输出一行到流
fread 二进制流输入/输出
freopen 打开流
fscanf 输入格式化转换
fseek 定位流
fsetpos 定位流
ftell 定位流
fwrite 二进制流输入/输出
getc 从输入流获取下一个字符或字
getchar 从输入流获取下一个字符或字
gets 从流获取一行
getw 从输入流获取下一个字符或字
mktemp 创建临时的文件名(唯一的)
perror 系统错误消息
printf 输出格式化转换
putc 输出一个字符或字到流
putchar 输出一个字符或字到流
puts 输出一行到流
putw 输出一个字符或字到流
remove 移除目录节点
rewind 定位流
scanf 输入格式化转换
setbuf 流的缓冲操作
setbuffer 流的缓冲操作
setlinebuf 流的缓冲操作
setvbuf 流的缓冲操作
sprintf 输出格式化转换
sscanf 输入格式化转换
strerror 系统错误消息
sys_errlist 系统错误消息
sys_nerr 系统错误消息
tempnam 临时文件函数
tmpfile 临时文件函数
tmpnam 临时文件函数
ungetc 回退字符
vfprintf 输出格式化转换
vfscanf 输入格式化转换
vprintf 输出格式化转换
vsscanf 输入格式化转换
标准
标准I/O库遵循C89标准
推荐阅读
close,open,read,write,stdout,unlocked_stdio
版本记录
这个页面是Linux man-pages项目3.54版本的一部分。关于该项目的信息和bug报道可以在该网站找到:http://www.kernel.org/doc/man-pages/。
2001-12-26