<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Stdio.h</id>
	<title>Stdio.h - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Stdio.h"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Stdio.h&amp;action=history"/>
	<updated>2026-07-14T08:12:16Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=Stdio.h&amp;diff=858382&amp;oldid=prev</id>
		<title>imported&gt;Willy1018-bot：​BOTR：批量替換所有lang-xx模板為langx模板( V6.4.0.1 )</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Stdio.h&amp;diff=858382&amp;oldid=prev"/>
		<updated>2025-07-05T02:10:31Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/%E6%9C%BA%E5%99%A8%E4%BA%BA/%E4%BD%9C%E4%B8%9A%E8%AF%B7%E6%B1%82#.E8.AB.8B.E6.B1.82.E6.89.B9.E9.87.8F.E6.9B.BF.E6.8F.9B.E6.89.80.E6.9C.89lang-xx.E6.A8.A1.E6.9D.BF.E7.82.BAlangx.E6.A8.A1.E6.9D.BF&quot; class=&quot;extiw&quot; title=&quot;wikipedia:机器人/作业请求&quot;&gt;BOTR&lt;/a&gt;：批量替換所有lang-xx模板為langx模板( V6.4.0.1 )&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{lowercase|title=stdio.h}}&lt;br /&gt;
{{noteTA&lt;br /&gt;
|G1=IT&lt;br /&gt;
|1=zh-hant:巨集;zh-hans:宏&lt;br /&gt;
}}&lt;br /&gt;
{{C_Standard_library}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stdio.h&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;（{{langx|en|&amp;#039;&amp;#039;&amp;#039;standard input/output header&amp;#039;&amp;#039;&amp;#039;}}，标准输入/输出头文件）是[[C语言]]为输入输出提供的[[C标准库|标准库]][[头文件]]，其前身是[[迈克·莱斯克]]20世纪70年代编写的“可移植输入输出程序库”&amp;lt;ref&amp;gt;{{cite book |last1=Kernighan |first1=Brian |last2=Pike |first2=Rob |title=The UNIX Programming Environment |url=https://archive.org/details/unixprogramminge0000kern |publisher=[[Prentice Hall]] |location=Englewood Cliffs |year=1984 |page=[https://archive.org/details/unixprogramminge0000kern/page/200 200]}}&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
C语言中的所有输入和输出都由抽象的字节流来完成，对文件的访问也通过关联的输入或输出流进行。这一模式随UNIX操作系统而普及，在现代操作系统和编程语言中仍被广泛应用。&lt;br /&gt;
&lt;br /&gt;
==头文件内容==&lt;br /&gt;
===类型===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!标识符!!说明&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;size_t&amp;lt;/code&amp;gt;||用于表示大小的数据类型&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;FILE&amp;lt;/code&amp;gt;||记录流的信息的数据结构&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;fpos_t&amp;lt;/code&amp;gt;||用于在文件中定位的数据类型&lt;br /&gt;
|}&lt;br /&gt;
===宏===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!标识符!!说明&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;NULL&amp;lt;/code&amp;gt;||空指针&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;_IOFBF&amp;lt;/code&amp;gt;||rowspan=&amp;quot;3&amp;quot;|用于控制缓冲方式的参数&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;_IOLBF&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;_IONBF&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;BUFSIZ&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;setbuf&amp;lt;/code&amp;gt;函数使用的缓冲区大小&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;EOF&amp;lt;/code&amp;gt;||文件结尾标志&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;FOPEN_MAX&amp;lt;/code&amp;gt;||实现保证能够同时打开的文件数量&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;FILENAME_MAX&amp;lt;/code&amp;gt;||实现保证支持的最长文件名的字符数&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;L_tmpnam&amp;lt;/code&amp;gt;||存放&amp;lt;code&amp;gt;tmpnam&amp;lt;/code&amp;gt;函数生成的临时文件名的&amp;lt;code&amp;gt;char&amp;lt;/code&amp;gt;数组的大小&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SEEK_CUR&amp;lt;/code&amp;gt;||rowspan=&amp;quot;3&amp;quot;|用于控制文件定位方式的参数&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SEEK_END&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;SEEK_SET&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||&amp;lt;code&amp;gt;TMP_MAX&amp;lt;/code&amp;gt;||实现保证能生成的临时文件名个数&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===标准流===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!标识符!!说明&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;stderr&amp;lt;/code&amp;gt;||标准错误流&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;stdin&amp;lt;/code&amp;gt;||标准输入流&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;stdout&amp;lt;/code&amp;gt;||标准输出流&lt;br /&gt;
|}&lt;br /&gt;
===函数===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!类型!!函数原型&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;10&amp;quot;|文件操作||&amp;lt;code&amp;gt;int remove(const char *filename);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;int rename(const char *old, const char *new);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;FILE *tmpfile(void);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;char *tmpnam(char *s);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;int fclose(FILE *stream);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;int fflush(FILE *stream);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;FILE *fopen(const char * restrict filename, const char * restrict mode);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;FILE *freopen(const char * restrict filename, const char * restrict mode, FILE * restrict stream);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;void setbuf(FILE * restrict stream, char * restrict buf);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;int setvbuf(FILE * restrict stream, char * restrict buf, int mode, size_t size);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;14&amp;quot;|格式化输入输出||&amp;lt;code&amp;gt;int fprintf(FILE * restrict stream, const char * restrict format, ...);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;int fscanf(FILE * restrict stream, const char * restrict format, ...);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;int printf(const char * restrict format, ...);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;int scanf(const char * restrict format, ...);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;int snprintf(char * restrict s, size_t n, const char * restrict format, ...);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;int sprintf(char * restrict s, const char * restrict format, ...);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;int sscanf(const char * restrict s, const char * restrict format, ...);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;int vfprintf(FILE * restrict stream, const char * restrict format, va_list arg);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;int vfscanf(FILE * restrict stream, const char * restrict format, va_list arg);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;int vprintf(const char * restrict format, va_list arg);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;int vscanf(const char * restrict format, va_list arg);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;int vsnprintf(char * restrict s, size_t n, const char * restrict format, va_list arg);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;int vsprintf(char * restrict s, const char * restrict format, va_list arg);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;int vsscanf(const char * restrict s, const char * restrict format, va_list arg);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;10&amp;quot;|字符输入输出||&amp;lt;code&amp;gt;int fgetc(FILE *stream);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;char *fgets(char * restrict s, int n, FILE * restrict stream);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;int fputc(int c, FILE *stream);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;int fputs(const char * restrict s, FILE * restrict stream);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;int getc(FILE *stream);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;int getchar(void);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;int putc(int c, FILE *stream);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;int putchar(int c);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;int puts(const char *s);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;int ungetc(int c, FILE *stream);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|直接输入输出||&amp;lt;code&amp;gt;size_t fread(void * restrict ptr, size_t size, size_t nmemb, FILE * restrict stream);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;size_t fwrite(const void * restrict ptr, size_t size, size_t nmemb, FILE * restrict stream);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;5&amp;quot;|文件内定位||&amp;lt;code&amp;gt;int fgetpos(FILE * restrict stream, fpos_t * restrict pos);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;int fseek(FILE *stream, long int offset, int whence);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;int fsetpos(FILE *stream, const fpos_t *pos);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;long int ftell(FILE *stream);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;void rewind(FILE *stream);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;4&amp;quot;|错误处理||&amp;lt;code&amp;gt;void clearerr(FILE *stream);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;int feof(FILE *stream);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;int ferror(FILE *stream);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;void perror(const char *s);&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
==相关库==&lt;br /&gt;
[[C++]]引入了&amp;lt;code&amp;gt;[[iostream]]&amp;lt;/code&amp;gt;进行输入输出，但仍保留了&amp;lt;code&amp;gt;stdio.h&amp;lt;/code&amp;gt;的功能。&lt;br /&gt;
&lt;br /&gt;
[[贝尔实验室]]开发了Sfio库，旨在弥补&amp;lt;code&amp;gt;stdio.h&amp;lt;/code&amp;gt;在功能、速度和安全性上的不足。&amp;lt;ref&amp;gt;{{cite conference |title=SFIO: Safe/Fast String/File IO |first1=David G. |last1=Korn |first2=Kiem-Phong |last2=Vo |conference=Proc. Summer USENIX Conf. |year=1991}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
==参见==&lt;br /&gt;
*[[I/O]]&lt;br /&gt;
*[[wchar.h]]&lt;br /&gt;
== 参考文献 ==&lt;br /&gt;
{{Reflist}}&lt;br /&gt;
{{Refbegin}}&lt;br /&gt;
*{{cite book|author=ISO/IEC JTC 1/SC 22|title=ISO/IEC 9899:2018, Information technology — Programming languages — C|url=https://www.iso.org/standard/74528.html|access-date=2018-08-19|archive-date=2018-08-10|archive-url=https://web.archive.org/web/20180810010929/https://www.iso.org/standard/74528.html|dead-url=yes}}&lt;br /&gt;
{{Refend}}&lt;br /&gt;
==外部链接==&lt;br /&gt;
*[http://zh.cppreference.com/w/c/io C语言输入/输出参考手册]{{Wayback|url=http://zh.cppreference.com/w/c/io |date=20180219090533 }}&lt;br /&gt;
&lt;br /&gt;
[[Category:C标准库头文件]]&lt;br /&gt;
[[Category:输入/输出]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Willy1018-bot</name></author>
	</entry>
</feed>