語法:html
#include <stdio.h> void clearerr( FILE *stream ); |
clearerr函數重置錯誤標記和給出的流的EOF指針. 當發生錯誤時,你可使用perror()判斷實際上發生了何種錯誤.數組
相關主題: feof(), ferror(), 和perror().緩存
語法:函數
#include <stdio.h> int fclose( FILE *stream ); |
函數fclose()關閉給出的文件流, 釋放已關聯到流的全部緩衝區. fclose()執行成功時返回0,不然返回EOF.post
相關主題: fopen(), freopen(), 和fflush().翻譯
語法:指針
#include <stdio.h> int feof( FILE *stream ); |
函數feof()在到達給出的文件流的文件尾時返回一個非零值.調試
相關主題: clearerr(), ferror(), perror(), putc()和 getc().code
語法:orm
#include <stdio.h> int ferror( FILE *stream ); |
ferror()函數檢查stream(流)中的錯誤, 若是沒發生錯誤返回0,不然返回非零. 若是發生錯誤, 使用perror()檢測發生什麼錯誤.
相關主題: clearerr(), feof(), perror(),
語法:
#include <stdio.h> int fflush( FILE *stream ); |
若是給出的文件流是一個輸出流,那麼fflush()把輸出到緩衝區的內容寫入文件. 若是給出的文件流是輸入類型的,那麼fflush()會清除輸入緩衝區. fflush()在調試時很實用,特別是對於在程序中輸出到屏幕前發生錯誤片斷時. 直接調用 fflush( STDOUT )輸出能夠保證你的調試輸出能夠在正確的時間輸出.
printf( "Before first call\n" ); fflush( STDOUT ); shady_function(); printf( "Before second call\n" ); fflush( STDOUT ); dangerous_dereference();
相關主題: fclose(), fopen(), fread(), fwrite(), getc(), 和putc().
語法:
#include <stdio.h> int fgetc( FILE *stream ); |
fgetc()函數返回來自stream(流)中的下一個字符,若是到達文件尾或者發生錯誤時返回EOF.
相關主題: fputc(), getc(), putc(), 和fopen().
語法:
#include <stdio.h> int fgetpos( FILE *stream, fpos_t *position ); |
fgetpos()函數保存給出的文件流(stream)的位置指針到給出的位置變量(position)中. position變量是fpos_t類型的(它在stdio.h中定義)而且是能夠控制在FILE中每一個可能的位置對象. fgetpos()執行成功時返回0,失敗時返回一個非零值.
相關主題: fsetpos(), fseek()和 ftell().
語法:
#include <stdio.h> char *fgets( char *str, int num, FILE *stream ); |
函數fgets()從給出的文件流中讀取[num - 1]個字符而且把它們轉儲到str(字符串)中. fgets()在到達行末時中止,在這種狀況下,str(字符串)將會被一個新行符結束. 若是fgets()達到[num - 1]個字符或者遇到EOF, str(字符串)將會以null結束.fgets()成功時返回str(字符串),失敗時返回NULL.
語法:
#include <stdio.h> FILE *fopen( const char *fname, const char *mode ); |
fopen()函數打開由fname(文件名)指定的文件, 並返回一個關聯該文件的流.若是發生錯誤, fopen()返回NULL. mode(方式)是用於決定文件的用途(例如 用於輸入,輸出,等等)
Mode(方式) | 意義 |
"r" | 打開一個用於讀取的文本文件 |
"w" | 建立一個用於寫入的文本文件 |
"a" | 附加到一個文本文件 |
"rb" | 打開一個用於讀取的二進制文件 |
"wb" | 建立一個用於寫入的二進制文件 |
"ab" | 附加到一個二進制文件 |
"r+" | 打開一個用於讀/寫的文本文件 |
"w+" | 建立一個用於讀/寫的文本文件 |
"a+" | 打開一個用於讀/寫的文本文件 |
"rb+" | 打開一個用於讀/寫的二進制文件 |
"wb+" | 建立一個用於讀/寫的二進制文件 |
"ab+" | 打開一個用於讀/寫的二進制文件 |
示例:
char ch; FILE *input = fopen( "stuff", "r" ); ch = getc( input );
語法:
#include <stdio.h> int fprintf( FILE *stream, const char *format, ... ); |
fprintf()函數根據指定的format(格式)(格式)發送信息(參數)到由stream(流)指定的文件. fprintf()只能和printf()同樣工做. fprintf()的返回值是輸出的字符數,發生錯誤時返回一個負值.
示例:
char name[20] = "Mary"; FILE *out; out = fopen( "output.txt", "w" ); if( out != NULL ) fprintf( out, "Hello %s\n", name );
語法:
#include <stdio.h> int fputc( int ch, FILE *stream ); |
函數fputc()把給出的字符ch寫到給出的輸出流. 返回值是字符, 發生錯誤時返回值是EOF.
相關主題: fgetc(), fopen(), fprintf(), fread(), 和fwrite().
語法:
#include <stdio.h> int fputs( const char *str, FILE *stream ); |
fputs()函數把str(字符串)指向的字符寫到給出的輸出流. 成功時返回非負值, 失敗時返回EOF.
相關主題: fgets(), gets(), puts(), fprintf(), 和fscanf().
語法:
#include <stdio.h> int fread( void *buffer, size_t size, size_t num, FILE *stream ); |
函數fread()讀取[num]個對象(每一個對象大小爲size(大小)指定的字節數),並把它們替換到由buffer(緩衝區)指定的數組. 數據來自給出的輸入流. 函數的返回值是讀取的內容數量...
相關主題: fwrite(), fopen(),fscanf(), fgetc()和getc().
語法:
#include <stdio.h> FILE *freopen( const char *fname, const char *mode, FILE *stream ); |
freopen()函數經常使用於再分配一個以存在的流給一個不一樣的文件和方式(mode).在調用本函數後,給出的文件流將會用mode(方式)指定的訪問模式引用fname(文件名). freopen()的返回值是新的文件流,發生錯誤時返回NULL.
語法:
#include <stdio.h> int fscanf( FILE *stream, const char *format, ... ); |
函數fscanf()以scanf()的執行方式從給出的文件流中讀取數據. fscanf()的返回值是事實上已賦值的變量的數,若是未進行任何分配時返回EOF.
語法:
#include <stdio.h> int fseek( FILE *stream, long offset, int origin ); |
函數fseek()爲給出的流設置位置數據. origin的值應該是下列值其中之一(在stdio.h中定義):
名稱 | 說明 |
SEEK_SET | 從文件的開始處開始搜索 |
SEEK_CUR | 從當前位置開始搜索 |
SEEK_END | 從文件的結束處開始搜索 |
fseek()成功時返回0,失敗時返回非零. 你可使用fseek()移動超過一個文件,可是不能在開始處以前. 使用fseek()清除關聯到流的EOF標記.
相關主題: ftell(), rewind(), fopen(), fgetpos()和 fsetpos().
語法:
#include <stdio.h> int fsetpos( FILE *stream, const fpos_t *position ); |
fsetpos()函數把給出的流的位置指針移到由position對象指定的位置. fpos_t是在stdio.h中定義的. fsetpos()執行成功返回0,失敗時返回非零.
相關主題: fgetpos(), fseek()和 ftell().
語法:
#include <stdio.h> long ftell( FILE *stream ); |
ftell()函數返回stream(流)當前的文件位置,若是發生錯誤返回-1.
語法:
#include <stdio.h> int fwrite( const void *buffer, size_t size, size_t count, FILE *stream ); |
fwrite()函數從數組buffer(緩衝區)中, 寫count個大小爲size(大小)的對象到stream(流)指定的流. 返回值是已寫的對象的數量.
相關主題: fread(), fscanf(), getc()和 fgetc().
語法:
#include <stdio.h> int getc( FILE *stream ); |
getc()函數從stream(流)獲取並返回下一個字符,若是到達文件尾返回EOF. getc()和fgetc()是同樣的. 例如:
char ch; FILE *input = fopen( "stuff", "r" ); ch = getc( input ); while( ch != EOF ) { printf( "%c", ch ); ch = getc( input ); }
相關主題: fputc(), fgetc(), putc()和 fopen().
語法:
#include <stdio.h> int getchar( void ); |
getchar()函數從STDIN(標準輸入)獲取並返回下一個字符,若是到達文件尾返回EOF.
相關主題: fputc(), fgetc(), putc()和 fopen().
語法:
#include <stdio.h> char *gets( char *str ); |
gets()函數從STDIN(標準輸入)讀取字符並把它們加載到str(字符串)裏,直到遇到新行(\n)或到達EOF. 新行字符翻譯爲一個null中斷符. gets()的返回值是讀入的字符串,若是錯誤返回NULL.
相關主題: fputs(), fgetc(),fgets()和 puts().
語法:
#include <stdio.h> void perror( const char *str ); |
perror()函數打印str(字符串)和一個相應的執行定義的錯誤消息到全局變量errno中.
語法:
#include <stdio.h> int printf( const char *format, ... ); |
printf()函數根據format(格式)給出的格式打印輸出到STDOUT(標準輸出)和其它參數中.
字符串format(格式)由兩類項目組成 - 顯示到屏幕上的字符和定義printf()顯示的其它參數. 基本上, 你能夠指定一個包含文本在內的format(格式)字符串,也能夠是映射到printf()其它參數的"特殊"字符. 例如本代碼
char name[20] = "Bob"; int age = 21; printf( "Hello %s, you are %d years old\n", name, age );
顯示下列輸出:
Hello Bob, you are 21 years old
%s 表示, "在這裏插入首個參數,一個字符串." %d 表示第二個參數(一個整數)應該放置在那裏. 不一樣的"%-codes"表示不一樣的變量類型, 也能夠限制變量的長度.
Code | 格式 |
%c | 字符 |
%d | 帶符號整數 |
%i | 帶符號整數 |
%e | 科學計數法, 使用小寫"e" |
%E | 科學計數法, 使用大寫"E" |
%f | 浮點數 |
%g | 使用%e或%f中較短的一個 |
%G | 使用%E或%f中較短的一個 |
%o | 八進制 |
%s | 一串字符 |
%u | 無符號整數 |
%x | 無符號十六進制數, 用小寫字母 |
%X | 無符號十六進制數, 用大寫字母 |
%p | 一個指針 |
%n | 參數應該是一個指向一個整數的指針 指向的是字符數放置的位置 |
%% | 一個'%'符號 |
一個位於一個%和格式化命令間的整數擔當着一個最小字段寬度說明符,而且加上足夠多的空格或0使輸出足夠長. 若是你想填充0,在最小字段寬度說明符前放置0. 你可使用一個精度修飾符,它能夠根據使用的格式代碼而有不一樣的含義.
%12.6f
將會至少顯示12位數字,並帶有6位小數的浮點數.
全部的printf()的輸出都是右對齊的,除非你在%符號後放置了負號. 例如,
%-12.4f
將會顯示12位字符,4位小數位的浮點數而且左對齊. 你能夠修改帶字母l和h%d, %i, %o, %u和 %x 等類型說明符指定長型和短型數據類型 (例如 %hd 表示一個短整數). %e, %f和 %g 類型說明符,能夠在它們前面放置l指出跟隨的是一個double. %g, %f和 %e 類型說明符能夠置於字符'#'前保證出現小數點, 即便沒有小數位. 帶%x類型說明符的'#'字符的使用, 表示顯示十六進制數時應該帶'0x'前綴. 帶%o類型說明符的'#'字符的使用, 表示顯示八進制數時應該帶一個'0'前綴.
你能夠在輸出字符串中包含 連續的Escape序列.
printf()的返回值是打印的字符數,若是發生錯誤則返回一個負值.
語法:
#include <stdio.h> int putc( int ch, FILE *stream ); |
putc()函數把字符ch寫到stream(流)中. 返回值是寫入的字符, 發生錯誤時返回EOF. 例如:
char ch; FILE *input; input = fopen( "temp.cpp", "r" ); ch = getc( input ); while( ch != EOF ) { printf( "%c", ch ); ch = getc( input ); }
顯示"temp.cpp"的內容到屏幕.
相關主題: fgetc(), fputc(), getchar()和 putchar().
語法:
#include <stdio.h> int putchar( int ch ); |
putchar()函數把ch寫到STDOUT(標準輸出). 代碼
putchar( ch );
和
putc( ch, STDOUT );
同樣.
putchar()的返回值是被寫的字符, 發生錯誤時返回EOF.
相關主題: putc()
語法:
#include <stdio.h> int puts( char *str ); |
函數puts()把str(字符串)寫到STDOUT(標準輸出)上. puts() 成功時返回非負值, 失敗時返回EOF.
相關主題: putc(), gets()和 printf().
語法:
#include <stdio.h> int remove( const char *fname ); |
remove()函數刪除由fname(文件名)指定的文件. remove()成功時返回0,若是發生錯誤返回非零.
相關主題: rename()
語法:
#include <stdio.h> int rename( const char *oldfname, const char *newfname ); |
函數rename()更改文件oldfname的名稱爲newfname. rename()成功時返回0,錯誤時返回非零.
相關主題: remove()
語法:
#include <stdio.h> void rewind( FILE *stream ); |
函數rewind()把文件指針移到由stream(流)指定的開始處, 同時清除和流相關的錯誤和EOF標記.
相關主題: fseek()
語法:
#include <stdio.h> int scanf( const char *format, ... ); |
scanf()函數根據由format(格式)指定的格式從stdin(標準輸入)讀取,並保存數據到其它參數. 它和printf()有點相似. format(格式)字符串由控制字符,空白字符和非空白字符組成. 控制字符以一個%符號開始,以下:
控制字符 | 說明 |
%c | 一個單一的字符 |
%d | 一個十進制整數 |
%i | 一個整數 |
%e, %f, %g | 一個浮點數 |
%o | 一個八進制數 |
%s | 一個字符串 |
%x | 一個十六進制數 |
%p | 一個指針 |
%n | 一個等於讀取字符數量的整數 |
%u | 一個無符號整數 |
%[] | 一個字符集 |
%% | 一個精度符號 |
scanf()讀取匹配format(格式)字符串的輸入. 當讀取到一個控制字符, 它把值放置到下一個變量. 空白(tabs, 空格等等)會跳過. 非空白字符和輸入匹配, 而後丟棄. 若是是一個在%符號和控制符間的數量, 那麼只有指定數量的字符轉換到變量中. 若是scanf()遇到一個字符集(用%[]控制字符表示), 那麼在括號中的任意字符都會讀取到變量中. scanf()的返回值是成功賦值的變量數量, 發生錯誤時返回EOF.
語法:
#include <stdio.h> void setbuf( FILE *stream, char *buffer ); |
setbuf()函數設置stream(流)使用buffer(緩衝區),若是buffer(緩衝區)是null,關閉緩衝. 若是使用非標準緩衝尺寸, 它應該由BUFSIZ字符決定長度.
相關主題: fopen(), fclose(), setvbuf(),
語法:
#include <stdio.h> int setvbuf( FILE *stream, char *buffer, int mode, size_t size ); |
函數setvbuf()設置用於stream(流)的緩衝區到buffer(緩衝區),其大小爲size(大小). mode(方式)能夠是:
相關主題: setbuf(),
語法:
#include <stdio.h> int sprintf( char *buffer, const char *format, ... ); |
sprintf()函數和printf()相似, 只是把輸出發送到buffer(緩衝區)中.返回值是寫入的字符數量. 例如:
char string[50]; int file_number = 0; sprintf( string, "file.%d", file_number ); file_number++; output_file = fopen( string, "w" );
相關主題: printf(), fsprintf(),
語法:
#include <stdio.h> int sscanf( const char *buffer, const char *format, ... ); |
函數sscanf()和scanf()相似, 只是輸入從buffer(緩衝區)中讀取.
語法:
#include <stdio.h> FILE *tmpfile( void ); |
函數tempfile()用一個獨特的文件名打開一個臨時文件,並返回一個到該文件的指針.若是發生錯誤則返回null.
相關主題: tmpnam(),
語法:
#include <stdio.h> char *tmpnam( char *name ); |
tmpnam()函數建立一個獨特的文件名並保存在name中. tmpnam()最多能夠調用TMP_MAX指定的次數.
相關主題: tmpfile(),
語法:
#include <stdio.h> int ungetc( int ch, FILE *stream ); |
函數ungetc()把字符ch放回到stream(流)中.
相關主題: getc(),
語法:
#include <stdarg.h> #include <stdio.h> int vprintf( char *format, va_list arg_ptr ); int vfprintf( FILE *stream, const char *format, va_list arg_ptr ); int vsprintf( char *buffer, char *format, va_list arg_ptr ); |
這些函數和printf()很是類似, fprintf()和 sprintf()的不一樣在於參數列表是一個指向一系列參數的指針. va_list在STDARG.H中定義,而且也能夠被va_arg()使用. 例如:
void error( char *fmt, ... ) { va_list args; va_start( args, fmt ); fprintf( stderr, "Error: " ); vfprintf( stderr, fmt, args ); fprintf( stderr, "\n" ); va_end( args ); exit( 1 ); }