📄 stdio_details.html
字号:
<HTML><HEAD> <TITLE>标准 C I/O</TITLE></HEAD><BODY BGCOLOR="FFFFFF"><TABLE WIDTH="100%" BGCOLOR="EEEEFF"><TR><TD> <A HREF="index.html">cppreference.com</A> -> <A HREF="stdio.html">标准 C I/O</A> ->详细说明</TD></TR></TABLE><H1>标准 C I/O</H1> <HR><H2> <A NAME="clearerr">clearerr</A></H2><I>语法:</I><TABLE BGCOLOR="CCCCFF"><TR><TD><PRE> #include <stdio.h> void clearerr( FILE *stream );</PRE></TD></TR></TABLE><P> clearerr函数重置错误标记和给出的流的EOF指针. 当发生错误时,你可以使用<A HREF="#perror">perror()</A>判断实际上发生了何种错误.</P><I>相关主题:</I><BR><STRONG> <A HREF="#feof">feof()</A>, <A HREF="#ferror">ferror()</A>, 和<A HREF="#perror">perror()</A>. </STRONG><HR><H2> <A NAME="fclose">fclose</A></H2><I>语法:</I><TABLE BGCOLOR="CCCCFF"><TR><TD><PRE> #include <stdio.h> int fclose( FILE *stream );</PRE></TD></TR></TABLE><P> 函数fclose()关闭给出的文件流, 释放已关联到流的所有缓冲区. fclose()执行成功时返回0,否则返回EOF.</P><I>相关主题:</I><BR><STRONG> <A HREF="#fopen">fopen()</A>, <A HREF="#freopen">freopen()</A>, 和<A HREF="#fflush">fflush()</A>. </STRONG><HR><H2> <A NAME="feof">feof</A></H2><I>语法:</I><TABLE BGCOLOR="CCCCFF"><TR><TD><PRE> #include <stdio.h> int feof( FILE *stream );</PRE></TD></TR></TABLE><P> 函数feof()在到达给出的文件流的文件尾时返回一个非零值.</P><I>相关主题:</I><BR><STRONG> <A HREF="#clearerr">clearerr()</A>, <A HREF="#ferror">ferror()</A>, <A HREF="#perror">perror()</A>, <A HREF="#putc">putc()</A>和 <A HREF="#getc">getc()</A>. </STRONG><HR><H2> <A NAME="ferror">ferror</A></H2><I>语法:</I><TABLE BGCOLOR="CCCCFF"><TR><TD><PRE> #include <stdio.h> int ferror( FILE *stream );</PRE></TD></TR></TABLE><P> ferror()函数检查<I>stream</I>(流)中的错误, 如果没发生错误返回0,否则返回非零. 如果发生错误, 使用<A HREF="#perror">perror()</A>检测发生什么错误.</P><I>相关主题:</I><BR><STRONG><A HREF="#clearerr">clearerr()</A>, <A HREF="#feof">feof()</A>, <A HREF="#perror">perror()</A>, </STRONG><HR><H2> <A NAME="fflush">fflush</A></H2><I>语法:</I><TABLE BGCOLOR="CCCCFF"><TR><TD><PRE> #include <stdio.h> int fflush( FILE *stream );</PRE></TD></TR></TABLE><P> 如果给出的文件流是一个输出流,那么fflush()把输出到缓冲区的内容写入文件. 如果给出的文件流是输入类型的,那么fflush()会清除输入缓冲区. fflush()在调试时很实用,特别是对于在程序中输出到屏幕前发生错误片段时. 直接调用 fflush( STDOUT )输出可以保证你的调试输出可以在正确的时间输出.</P><PRE> printf( "Before first call\n" ); fflush( STDOUT ); shady_function(); printf( "Before second call\n" ); fflush( STDOUT ); dangerous_dereference();</PRE><I>相关主题:</I><BR><STRONG> <A HREF="#fclose">fclose()</A>, <A HREF="#fopen">fopen()</A>, <A HREF="#fread">fread()</A>, <A HREF="#fwrite">fwrite()</A>, <A HREF="#getc">getc()</A>, 和<A HREF="#putc">putc()</A>. </STRONG><HR><H2> <A NAME="fgetc">fgetc</A></H2><I>语法:</I><TABLE BGCOLOR="CCCCFF"><TR><TD><PRE> #include <stdio.h> int fgetc( FILE *stream );</PRE></TD></TR></TABLE><P> fgetc()函数返回来自<I>stream</I>(流)中的下一个字符,如果到达文件尾或者发生错误时返回EOF. </P><I>相关主题:</I><BR><STRONG> <A HREF="#fputc">fputc()</A>, <A HREF="#getc">getc()</A>, <A HREF="#putc">putc()</A>, 和<A HREF="#fopen">fopen()</A>.</STRONG><HR><H2> <A NAME="fgetpos">fgetpos</A></H2><I>语法:</I><TABLE BGCOLOR="CCCCFF"><TR><TD><PRE> #include <stdio.h> int fgetpos( FILE *stream, fpos_t *position );</PRE></TD></TR></TABLE><P> fgetpos()函数保存给出的文件流(stream)的位置指针到给出的位置变量(position)中. position变量是fpos_t类型的(它在stdio.h中定义)并且是可以控制在FILE中每个可能的位置对象. fgetpos()执行成功时返回0,失败时返回一个非零值.</P><I>相关主题:</I><BR><STRONG> <A HREF="#fsetpos">fsetpos()</A>, <A HREF="#fseek">fseek()</A>和 <A HREF="#ftell">ftell()</A>. </STRONG><HR><H2> <A NAME="fgets">fgets</A></H2><I>语法:</I><TABLE BGCOLOR="CCCCFF"><TR><TD><PRE> #include <stdio.h> char *fgets( char *str, int num, FILE *stream );</PRE></TD></TR></TABLE><P> 函数fgets()从给出的文件流中读取[<I>num - 1</I>]个字符并且把它们转储到<I>str</I>(字符串)中. fgets()在到达行末时停止,在这种情况下,<I>str</I>(字符串)将会被一个新行符结束. 如果fgets()达到[<I>num - 1</I>]个字符或者遇到EOF, <I>str</I>(字符串)将会以null结束.fgets()成功时返回<I>str</I>(字符串),失败时返回NULL. </P><HR><H2> <A NAME="fopen">fopen</A></H2><I>语法:</I><TABLE BGCOLOR="CCCCFF"><TR><TD><PRE> #include <stdio.h> FILE *fopen( const char *fname, const char *mode );</PRE></TD></TR></TABLE><P> fopen()函数打开由<I>fname</I>(文件名)指定的文件, 并返回一个关联该文件的流.如果发生错误, fopen()返回NULL. <I>mode</I>(方式)是用于决定文件的用途(例如 用于输入,输出,等等)</P> <TABLE BGCOLOR="EEEEFF"> <TR><TD><STRONG>Mode(方式)</STRONG></TD><TD><STRONG>意义</STRONG></TD></TR> <TR><TD>"r"</TD><TD>打开一个用于读取的文本文件</TD></TR> <TR><TD>"w"</TD><TD>创建一个用于写入的文本文件</TD></TR> <TR><TD>"a"</TD><TD>附加到一个文本文件</TD></TR> <TR><TD>"rb"</TD><TD>打开一个用于读取的二进制文件</TD></TR> <TR><TD>"wb"</TD><TD>创建一个用于写入的二进制文件</TD></TR> <TR><TD>"ab"</TD><TD>附加到一个二进制文件</TD></TR> <TR><TD>"r+"</TD><TD>打开一个用于读/写的文本文件</TD></TR> <TR><TD>"w+"</TD><TD>创建一个用于读/写的文本文件</TD></TR> <TR><TD>"a+"</TD><TD>打开一个用于读/写的文本文件</TD></TR> <TR><TD>"rb+"</TD><TD>打开一个用于读/写的二进制文件</TD></TR> <TR><TD>"wb+"</TD><TD>创建一个用于读/写的二进制文件</TD></TR> <TR><TD>"ab+"</TD><TD>打开一个用于读/写的二进制文件</TD></TR> </TABLE><P> 示例:</P><PRE> char ch; FILE *input = fopen( "stuff", "r" ); ch = getc( input ); </PRE><HR><H2> <A NAME="fprintf">fprintf</A></H2><I>语法:</I><TABLE BGCOLOR="CCCCFF"><TR><TD><PRE> #include <stdio.h> int fprintf( FILE *stream, const char *format, ... );</PRE></TD></TR></TABLE><P> fprintf()函数根据指定的<I>format</I>(格式)(格式)发送信息(参数)到由<I>stream</I>(流)指定的文件. fprintf()只能和<A HREF="#printf">printf()</A>一样工作. fprintf()的返回值是输出的字符数,发生错误时返回一个负值. </P><P> 示例:</P><PRE> char name[20] = "Mary"; FILE *out; out = fopen( "output.txt", "w" ); if( out != NULL ) fprintf( out, "Hello %s\n", name );</PRE><I>相关主题:</I><BR><STRONG> <A HREF="#printf">printf()</A> 和<A HREF="#fscanf">fscanf()</A>. </STRONG><HR><H2> <A NAME="fputc">fputc</A></H2><I>语法:</I><TABLE BGCOLOR="CCCCFF"><TR><TD><PRE> #include <stdio.h> int fputc( int ch, FILE *stream );</PRE></TD></TR></TABLE><P> 函数fputc()把给出的字符<I>ch</I>写到给出的输出流. 返回值是字符, 发生错误时返回值是EOF.</P><I>相关主题:</I><BR><STRONG> <A HREF="#fgetc">fgetc()</A>, <A HREF="#fopen">fopen()</A>, <A HREF="#fprintf">fprintf()</A>, <A HREF="#fread">fread()</A>, 和<A HREF="#fwrite">fwrite()</A>. </STRONG><HR><H2> <A NAME="fputs">fputs</A></H2><I>语法:</I><TABLE BGCOLOR="CCCCFF"><TR><TD><PRE> #include <stdio.h> int fputs( const char *str, FILE *stream );</PRE></TD></TR></TABLE><P> fputs()函数把<I>str</I>(字符串)指向的字符写到给出的输出流. 成功时返回非负值, 失败时返回EOF.</P><I>相关主题:</I><BR><STRONG> <A HREF="#fgets">fgets()</A>, <A HREF="#gets">gets()</A>, <A HREF="#puts">puts()</A>, <A HREF="#fprintf">fprintf()</A>, 和<A HREF="#fscanf">fscanf()</A>. </STRONG><HR><H2> <A NAME="fread">fread</A></H2><I>语法:</I><TABLE BGCOLOR="CCCCFF"><TR><TD><PRE> #include <stdio.h> int fread( void *buffer, size_t size, size_t num, FILE *stream );</PRE></TD></TR></TABLE><P> 函数fread()读取[<I>num</I>]个对象(每个对象大小为<I>size</I>(大小)指定的字节数),并把它们替换到由<I>buffer</I>(缓冲区)指定的数组. 数据来自给出的输入流. 函数的返回值是读取的内容数量...</P><P> 使用<A HREF="#feof">feof()</A>或<A HREF="#ferror">ferror()</A>判断到底发生哪个错误.</P><I>相关主题:</I><BR><STRONG> <A HREF="#fwrite">fwrite()</A>, <A HREF="#fopen">fopen()</A>,<A HREF="#fscanf">fscanf()</A>, <A HREF="#fgetc">fgetc()</A>和<A HREF="#getc">getc()</A>.</STRONG><HR><H2> <A NAME="freopen">freopen</A></H2><I>语法:</I><TABLE BGCOLOR="CCCCFF"><TR><TD><PRE> #include <stdio.h> FILE *freopen( const char *fname, const char *mode, FILE *stream );</PRE></TD></TR></TABLE><P> freopen()函数常用于再分配一个以存在的流给一个不同的文件和方式(mode).在调用本函数后,给出的文件流将会用<I>mode</I>(方式)指定的访问模式引用<I>fname</I>(文件名). freopen()的返回值是新的文件流,发生错误时返回NULL.</P><I>相关主题:</I><BR><STRONG> <A HREF="#fopen">fopen()</A> 和<A HREF="#fclose">fclose()</A>. </STRONG><HR><H2> <A NAME="fscanf">fscanf</A></H2><I>语法:</I><TABLE BGCOLOR="CCCCFF"><TR><TD><PRE> #include <stdio.h> int fscanf( FILE *stream, const char *format, ... );</PRE></TD></TR></TABLE><P> 函数fscanf()以<A HREF="#scanf">scanf()</A>的执行方式从给出的文件流中读取数据. fscanf()的返回值是事实上已赋值的变量的数,如果未进行任何分配时返回EOF.</P><I>相关主题:</I><BR><STRONG> <A HREF="#scanf">scanf()</A> 和<A HREF="#fprintf">fprintf()</A>. </STRONG><HR><H2> <A NAME="fseek">fseek</A></H2><I>语法:</I><TABLE BGCOLOR="CCCCFF"><TR><TD><PRE> #include <stdio.h> int fseek( FILE *stream, long offset, int origin );</PRE></TD></TR></TABLE><P> 函数fseek()为给出的流设置位置数据. <I>origin</I>的值应该是下列值其中之一(在stdio.h中定义):</P> <TABLE BGCOLOR="EEEEFF"> <TR><TD><STRONG>名称</STRONG></TD><TD><STRONG>说明</STRONG></TD></TR> <TR><TD>SEEK_SET</TD><TD>从文件的开始处开始搜索</TD></TR> <TR><TD>SEEK_CUR</TD><TD>从当前位置开始搜索</TD></TR> <TR><TD>SEEK_END</TD><TD>从文件的结束处开始搜索</TD><TR> </TABLE><P> fseek()成功时返回0,失败时返回非零. 你可以使用fseek()移动超过一个文件,但是不能在开始处之前. 使用fseek()清除关联到流的EOF标记.</P><I>相关主题:</I><BR><STRONG> <A HREF="#ftell">ftell()</A>, <A HREF="#rewind">rewind()</A>, <A HREF="#fopen">fopen()</A>, <A HREF="#fgetpos">fgetpos()</A>和 <A HREF="#fsetpos">fsetpos()</A>. </STRONG><HR><H2> <A NAME="fsetpos">fsetpos</A></H2><I>语法:</I><TABLE BGCOLOR="CCCCFF"><TR><TD><PRE> #include <stdio.h> int fsetpos( FILE *stream, const fpos_t *position );</PRE></TD></TR></TABLE><P> fsetpos()函数把给出的流的位置指针移到由<I>position</I>对象指定的位置. fpos_t是在stdio.h中定义的. fsetpos()执行成功返回0,失败时返回非零.</P><I>相关主题:</I><BR><STRONG> <A HREF="#fgetpos">fgetpos()</A>, <A HREF="#fseek">fseek()</A>和 <A HREF="#ftell">ftell()</A>. </STRONG><HR><H2> <A NAME="ftell">ftell</A></H2><I>语法:</I><TABLE BGCOLOR="CCCCFF"><TR><TD><PRE> #include <stdio.h> long ftell( FILE *stream );</PRE></TD></TR></TABLE><P> ftell()函数返回<I>stream</I>(流)当前的文件位置,如果发生错误返回-1.</P><I>相关主题:</I><BR><STRONG> <A HREF="#fseek">fseek()</A>和 <A HREF="#fgetpos">fgetpos()</A>. </STRONG><HR><H2> <A NAME="fwrite">fwrite</A></H2><I>语法:</I><TABLE BGCOLOR="CCCCFF"><TR><TD><PRE> #include <stdio.h> int fwrite( const void *buffer, size_t size, size_t count, FILE *stream );</PRE></TD></TR></TABLE><P> fwrite()函数从数组<I>buffer</I>(缓冲区)中, 写<I>count</I>个大小为<I>size</I>(大小)的对象到<I>stream</I>(流)指定的流. 返回值是已写的对象的数量.</P><I>相关主题:</I><BR><STRONG> <A HREF="#fread">fread()</A>, <A HREF="#fscanf">fscanf()</A>, <A HREF="#getc">getc()</A>和 <A HREF="#fgetc">fgetc()</A>. </STRONG><HR><H2> <A NAME="getc">getc</A></H2><I>语法:</I><TABLE BGCOLOR="CCCCFF"><TR><TD><PRE> #include <stdio.h> int getc( FILE *stream );</PRE></TD></TR></TABLE><P> getc()函数从<I>stream</I>(流)获取并返回下一个字符,如果到达文件尾返回EOF. getc()和fgetc()是一样的. 例如:</P><PRE> char ch; FILE *input = fopen( "stuff", "r" ); ch = getc( input ); while( ch != EOF ) { printf( "%c", ch ); ch = getc( input ); }</PRE><I>相关主题:</I><BR><STRONG> <A HREF="#fputc">fputc()</A>, <A HREF="#fgetc">fgetc()</A>, <A HREF="#putc">putc()</A>和 <A HREF="#fopen">fopen()</A>. </STRONG><HR><H2> <A NAME="getchar">getchar</A></H2><I>语法:</I><TABLE BGCOLOR="CCCCFF"><TR><TD><PRE> #include <stdio.h> int getchar( void );</PRE></TD></TR></TABLE><P> getchar()函数从STDIN(标准输入)获取并返回下一个字符,如果到达文件尾返回EOF.</P><I>相关主题:</I><BR><STRONG> <A HREF="#fputc">fputc()</A>, <A HREF="#fgetc">fgetc()</A>, <A HREF="#putc">putc()</A>和 <A HREF="#fopen">fopen()</A>. </STRONG><HR><H2> <A NAME="gets">gets</A></H2><I>语法:</I><TABLE BGCOLOR="CCCCFF"><TR><TD><PRE> #include <stdio.h> char *gets( char *str );</PRE></TD></TR></TABLE><P> gets()函数从STDIN(标准输入)读取字符并把它们加载到<I>str</I>(字符串)里,直到遇到新行(\n)或到达EOF. 新行字符翻译为一个null中断符. gets()的返回值是读入的字符串,如果错误返回NULL.</P><I>相关主题:</I><BR><STRONG> <A HREF="#fputs">fputs()</A>, <A HREF="#fgetc">fgetc()</A>,<A HREF="#fgets">fgets()</A>和 <A HREF="#puts">puts()</A>. </STRONG><HR><H2> <A NAME="perror">perror</A>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -