1. 程式人生 > >C語言之輸入輸出函式

C語言之輸入輸出函式

I/O函式的三種方式:單個字元,文字行,二進位制資料

單個字元

輸入函式:

int getchar( void );
從標準輸入裡讀取下一個字元,相當於getc(stdin)。返回型別為int型,為使用者輸入的ASCII碼,出錯返回-1。

int getc( FILE *stream );
和getchar功能一樣,從指定的檔案流中讀取一個字元,讀取後文件指標不會移動
getc(stdin)=getc

int fgetc( FILE *stream );
從檔案指標stream指向的檔案中讀取一個字元,讀取一個位元組後,游標位置後移一個位元組

輸出函式:

int putchar( int c );


向標準輸出(終端)輸出一個字元c。
int putc( int c, FILE *stream );
輸出一字元到指定流中。
putc(c,stdout)=putc(c)

int fputc( int c, FILE *stream );
將字元ch寫到檔案指標fp所指向的檔案的當前寫指標的位置。向檔案寫入一個字元後,檔案讀寫位置指標向後移動一個位元組。
fputc()與putc()等價

文字行

輸入函式:

char *gets( char *buffer );
從標準輸入裝置讀字串函式,其可以無限讀取,不會判斷上限,以回車結束讀取

char *fgets( char *string, int n, FILE *stream );


從檔案結構體指標stream中讀取資料,每次讀取一行。

鍵盤輸入gets(buf)=fgets(buf,n,stdin)

輸出函式:

int puts( const char *string );
向標準輸出裝置(螢幕)輸出字串並換行,具體為:把字串輸出到標準輸出裝置,將’\0’轉換為回車換行
int fputs( const char *string, FILE *stream );
向指定的檔案寫入一個字串(不自動寫入字串結束標記符’\0’)。成功寫入一個字串後,檔案的位置指標會自動後移,函式返回值為非負整數;否則返回EOF

二進位制資料

輸入函式:

size_t fread( void *buffer, size_t size, size_t count, FILE *stream );


從檔案流中讀資料,讀取的內容放入buffer中,最多讀取count個項,每個項size個位元組,如果呼叫成功返回實際讀取到的項個數(小於或等於count),如果不成功或讀到檔案末尾返回 0。

輸出函式:

size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream );
向檔案寫入一個數據塊,寫入buffer中的內容,一共count個項,每個項大小為size個位元組,如果執行成功則返回實際寫入的項個數

格式化輸入函式:

int scanf( const char *format [,argument]... );
按使用者指定的格式從鍵盤上把資料輸入到指定的變數之中。
int fscanf( FILE *stream, const char *format [, argument ]... );
根據資料格式(format)從輸入流(stream)中寫入資料(argument);與fgets的差別在於:fscanf遇到空格和換行時結束,注意空格時也結束,fgets遇到空格不結束。
int sscanf( const char *buffer, const char *format [, argument ] ... );
從一個字串中讀進與指定格式相符的資料
sscanf會從buffer裡讀進資料,依照format的格式將資料寫入到argument裡
sscanf與scanf類似,都是用於輸入的,只是後者以鍵盤(stdin)為輸入源,前者以固定字串為輸入源。
sscanf()用法很多,它可以取指定長度的字串,也可以過濾不想要的字元,只接收指定的字符集
可以用來控制接收使用者的輸入內容

格式化輸出函式:

int printf( const char *format [, argument]... );
向標準輸出裝置按規定格式輸出資訊
int fprintf( FILE *stream, const char *format [, argument ]...);
根據引數format 字串來轉換並格式化資料, 然後將結果輸出到引數stream 指定的檔案中, 直到出現字串結束(‘\0’)為止
int sprintf( char *buffer, const char *format [, argument] ... );
把格式化的資料寫入某個字串
返回值:字串長度(strlen)

感覺應該把sprintf和sscanf放在一起,因為它們兩個的引數一樣,好多次分不清這兩個函式。
sprintf剛好和sscanf反過來,sprintf將argument按format的格式寫入到buffer字串中
可以用來連線字串