名称

stdio-标准输入/输出库函数

另外参见

close(2),open(2),read(2),write(2),stdout(3),unlocked_stdio(3)

说明

标准I / O库提供了一个简单而有效的缓冲流I / O接口。输入和输出被映射到逻辑数据流,并且物理I / O特性被隐藏。函数和宏如下所示;有关更多信息,请参见各个手册页。

流通过打开文件而与外部文件(可能是物理设备)相关联,这可能涉及创建新文件。创建现有文件将导致其先前的内容被丢弃。如果文件可以支持定位请求(例如磁盘文件,而不是终端文件),那么与流相关联的文件位置指示符将定位在文件的开头(字节零),除非使用附加文件打开文件模式。如果使用附加模式,则不确定将位置指示符放置在文件的开头还是结尾。位置指示器由后续的读取,写入和定位请求维护。发生所有输入,就像连续调用fgetc(3)函数读取了字符一样;所有输出都好像所有字符都是通过连续调用fputc(3)函数写入的一样。

通过关闭文件,文件将从流中取消关联。在将流与文件取消关联之前,将刷新输出流(任何未写入的缓冲区内容都将传输到主机环境)。关闭文件(垃圾)后,指向FILE对象的指针的值不确定。

随后可以通过相同或另一个程序执行来重新打开文件,并取回或修改其内容(如果可以在开始时将其重新放置)。如果main函数返回其原始调用者,或调用exit(3)函数,则在程序终止之前,所有打开的文件都将关闭(因此所有输出流都将被刷新)。其他终止程序的方法(例如abort(3))不会影响正确关闭文件。

在程序启动时,预定义了三个文本流,无需显式打开它们:标准输入(用于读取常规输入),标准输出(用于写入常规输出)和标准错误(用于写入诊断输出)。这些流的缩写为stdin,stdout和stderr。打开时,标准错误流未完全缓冲;当且仅当流不引用交互式设备时,标准输入和输出流才被完全缓冲。

默认情况下,引用终端设备的输出流始终是行缓冲的。每当读取涉及终端设备的输入流时,这些流的未决输出都会自动写入。如果在输出端子上打印了一部分行之后需要进行大量计算,则有必要在停止输出并进行计算之前使标准输出fflush(3)以便显示输出。

stdio库是库libc的一部分,例程会根据需要由cc(1)自动加载。以下手册页的"摘要"部分指示要使用的包含文件,该函数的编译器声明是什么样的以及需要使用哪些外部变量。

以下定义为宏;在未使用#undef删除其当前定义之前,不得重用这些名称:BUFSIZEOFFILENAME_MAXFOPEN_MAXL_cuseridL_ctermidL_tmpnamNULLSEEK_ENDSEEK_SETSEEK_CURTMP_MAXclearerrfeofferrorfilenogetcgetcharputcputcharstderrstdin,stdout。存在宏函数feofferrorclearerrfilenogetcgetchar,putc和putchar的函数版本,如果显式删除了宏定义,则将使用这些函数版本。

List of functions

单元格不一致

出版信息

这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/

STDIO - Linux手册页

Linux程序员手册 第3部分
更新日期: 2017-11-26

语法

#包括

文件* stdin;
FILE * stdout;
FILE * stderr;

遵循规范

stdio库符合C89。

日期:2019-08-20 18:01:22 来源:oir作者:oir