stdio - 标准输入输出库函数
SYNOPSIS 总览
#include <stdio.h>
FILE *stdin;
FILE *stdout;
FILE *stderr;
DESCRIPTION 描述
标注 I/O 库函数提供了一个简单而有效的,带缓冲的流输出输出接口。输入和输出被映射为逻辑的数据流,物理的 I/O
特性则被隐藏起来。库中包含的函数与宏列在下面;更多信息可以从独立的 man 手册页中得到。
将一个流关联到一个外部文件 (可能是一个物理设备) 的方法是打开 ( opening )
这个文件,其中可能牵涉到创建一个新文件。创建已有的文件使得文件中已有的内容被丢弃。如果文件支持定位请求
(例如磁盘文件;但终端不是这样),那么一个与文件关联的定位标记 ( file position indicator ) 被定位到文件的起始 (0
字节),除非以追加模式打开文件。使用追加模式时,究竟定位标记位于文件的开始还是结束是没有指定的。定位标记由后续的读、写和定位请求来维护。从流中输入时,就如同字符是连续地成功调用了函数
fgetc(3) 而读入的;产生输出时,就如同所有字符是连续地成功调用了函数 fputc(3) 而输出的。
将一个流与一个与之关联的文件断开的办法是关闭 ( closing ) 这个文件。在流与文件断开之前,输出流被刷新
(任何未写入的缓冲的内容都被传输给主机环境)。在文件被关闭之后,指向 FILE 对象的指针的值是不确定的 (无用数据)。
一个文件可以继续被相同的或是不同的程序实体再次打开,它的内容可以被恢复或者修改 (如果它可以被重定位到文件开始的话)。如果 main
函数返回到它最初的调用者,或者调用了函数 exit(3) ,在程序终止前,所有打开的文件都将被关闭
(因此所有的输出流都被刷新)。其他终止程序的方法,例如 abort(3) 不会进行正常的关闭文件操作。
在程序启动时,会预先定义三个文本流,它们不需要显式地打开 --- 标准输入 (用于读入常规内容),--- 标准输出
(用于输出常规内容),以及 标准错误 (用于输出诊断信息)。这些流的缩写是 stdin,stdout 和 stderr
。在打开时,标准错误流不会完全缓冲;当且仅当流不是一个交互的设备时,标准输入和标准输出流才被完全缓冲。
指向终端设备的输出流总是默认使用行缓冲;未定的输出总是在指向一个终端设备的输入流被读取时自动被写入。如果在一个输出终端上打印了一行的一部分,然后运行了大量的计算后,应当在退出和计算前
fflush(3) 标准输出,使得输出可以显示出来。(?)
标准输入输出库 stdio 是函数库 libc 的一部分,需要时可以被编译器 cc(1) 和
pc(1) 自动加载。下列手册页的 SYNOPSIS 总览
段落会指出要包含哪些文件,函数定义的格式,以及它们受到哪些外部变量的影响。
下列为已定义的宏;如果不用 #undef 取消这些名称的当前定义的话,是不能重新使用它们的: BUFSIZ,
EOF, FILENAME_MAX, FOPEN_MAX, L_cuserid,
L_ctermid, L_tmpnam, NULL, SEEK_END,
SEEK_SET, SEE_CUR, TMP_MAX, clearerr, feof,
ferror, fileno, fropen, fwopen, getc,
getchar, putc, putchar, stderr, stdin,
stdout. 另外,还有与这些宏的功能对应的,函数形式的版本 feof, ferror,
clearerr, fileno, getc, getchar, putc, 和
putchar ,在显式地取消宏的定义时,可以使用它们。
LIST OF FUNCTIONS 函数列表
- Function 函数
- Description 描述
- clearerr
- 检测并重置流状态
- fclose
- 关闭流
- fdopen
- 打开流
- feof
- 检测并重置流状态
- ferror
- 检测并重置流状态
- fflush
- 刷新流
- fgetc
- 从输入流中获取下一个字符或词
- fgetpos
- 重定位流
- fgets
- 从流中获取一行
- fileno
- 返回流参数的整数形式的描述符
- fopen
- 打开流
- fprintf
- 按照格式输出常规内容
- fpurge
- 刷新流
- fputc
- 向流输出一个字符或词
- fputs
- 向流输出一行
- fread
- 二进制输入/输出
- freopen
- 打开流
- fropen
- 打开流
- 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
- 按照格式输出常规内容
- vscanf
- 按照格式输入常规内容
- vsprintf
- 按照格式输出常规内容
- vsscanf
- 按照格式输入常规内容
stdio - 标准输入输出库函数的更多相关文章
- 《你必须知道的495个C语言问题》读书笔记之第11-14章:ANSI C标准、库函数、浮点数
一.ANSI C标准 1. ANSI向C语言预处理器引入了几项新的功能,包括“字符串化”操作符(#).“符号粘贴”操作符(##).#pragma指令. 2. Q:char a[3] = "a ...
- flockfile, ftrylockfile, funlockfile - 为标准输入输出锁定文件 FILE
SYNOPSIS 总览 #include <stdio.h> void flockfile(FILE *filehandle); int ftrylockfile(FILE *fileha ...
- C语言的标准输入输出
1. 标准输入输出 标准输入.输出主要由缓冲区和操作方法两部分组.缓冲区实际上可以看做内存中的字符串数组,而操作方法主要是指printf.scanf.puts.gets,getcha.putcahr等 ...
- 【转载】标准输入输出重定向(Visual C++)
原文:标准输入输出重定向(Visual C++) 引言 本人偶得在 Visual C++ 中进行输入输出重定向的办法,比通常的做法“freopen”更加的灵活和方便,特在此共享.目前,代码正在不断地摸 ...
- 从使用os.system)在python命令(重定向标准输入输出
从使用os.system)在python命令(重定向标准输入输出 python 标准输出stdout stdio os.system通常我可以通过改变sys.stdout的值在python更改标准输出 ...
- C标准输入输出库
这样的代码有什么问题? char c; while((c = getchar()) != EOF) ... 首先,保存getchar的返回值的变量必须是int型.EOF是getchar返回的“超出范围 ...
- C/C++ 标准输入输出重定向
转载自:http://www.cnblogs.com/hjslovewcl/archive/2011/01/10/2314356.html 这个对经常在OJ上做题的童鞋们很有用.OJ基本都是用标准输入 ...
- linux标准输入输出及错误输出
Linux Shell 环境中支持输入输出重定向,用符号"<"和">"来表示. 0.1和2分别表示标准输入.标准输出和标准错误信息输出,可以用来指定 ...
- linux标准输入输出2>&1
linux中有三种标准输入输出,分别是STDIN,STDOUT,STDERR,对应的数字是0,1,2. STDIN是标准输入,默认从键盘读取信息:STDOUT是标准输出,默认将输出结果输出至终 ...
随机推荐
- Java 枚举(enum)详解
概念: Java1.5发行版本中增加了新的引用类型--枚举类型(enum type).枚举类型是指由一组固定的常量组成合法值的类型.在Java虚拟机中,枚举类在进行编译时会转变成普通的Java类. 创 ...
- K8S操作
一.K8Spods操作 kubectl delete all --all //删除 所有pods
- 2019牛客多校第三场A Graph Games 分块思想
题意:给你一张无向图,设s(x)为与x直接相连的点的集合,题目中有两种操作: 1:1 l r 将读入的边的序列中第l个到第r个翻转状态(有这条边 -> 没这条边, 没这条边 -> 有这条边 ...
- 愚蠢的sql语法错误(sum (xxx))
sum和()之间打了一个空格,导致一致报sql语法错误,看了半天不知道怎么回事orz
- delphi 删除文件夹里面的所有文件
1.新增一个函数 function TForm1.DelDirAll(aDir: string): Boolean;varvSearch: TSearchRec;vRet: integer;vKey: ...
- 关于LCN分布式事务框架
基于LCN框架解决分布式事务 LCN官网 https://www.txlcn.org/ "LCN并不生产事务,LCN只是本地事务的搬运工" 兼容 dubbo.springcloud ...
- 【leetcode】701. Insert into a Binary Search Tree
题目如下: Given the root node of a binary search tree (BST) and a value to be inserted into the tree, in ...
- read(),readline() 和 readlines() 比较
read(),readline() 和 readlines() 比较 共同点:均可接受一个变量用以限制每次读取的数据量,但通常不使用 区别: read() [即 fileObject().read( ...
- java开源项目
原文地址:http://blog.longjiazuo.com/archives/2625 1.整理出一些使用比较广或者个人觉得比较好的java开源项目和资料供参考.2.如果你觉得好但是我没有列出的开 ...
- SQL Server 管理套件(SSMS)
SQL Server 管理套件(SSMS) 当您按照之前章节的步骤顺利安装完 SQL Server 2014 后,要做的第一件事就是需要打开 SQL Server 管理套件,并且要知道怎样去使用它. ...