第九節 linux標準輸入輸出操作


   標準輸入輸出的基本操作,包括文件的打開與關閉,緩衝區的操作
   非格式化輸入輸出,包括單個字節、字符串以及數據塊的輸入輸出
   格式化輸入輸出
   
   
 1.標準輸入輸出的基本操作
   標準輸入文件(stdin):一般爲鍵盤
   標準輸出文件(stout):一般爲顯示器
   標準錯誤輸出文件(stderr):一般爲顯示器
   
   1.文件的打開
   操作文件之前要打開文件,打開文件主要是在系統中分配一些資源用於保存該文件的狀態信息,並獲取文件的指針,
   打開文件的函數爲fopen
   
   2.文件的關閉
   fclose函數
   
   3.緩衝區的刷新
   刷新操作是指將緩衝區中的數據清除
   fflush函數將緩衝區中的數據寫入到磁盤文件或輸出到用戶終端,同時清空緩衝區
   fpurge函數將緩衝區的數據直接清除,包括尚未讀取或寫入的數據
   
   4.緩衝區屬性的設置
   緩衝區的大小和類型等都可以通過函數來設置,緩衝區的類型有下面3種。
   全緩衝:緩衝區被填滿後才執行輸入輸出操作,將數據寫入到磁盤文件或輸出到用戶終端。
   
   行緩衝:緩衝區中填入換行符時,執行輸入輸出操作
   
   無緩衝:不對數據進行緩存,標準錯誤輸出stderr一般就是無緩衝的,這可以使錯誤信息儘快地顯示出來。

   打開文件後,用戶可以使用下面的函數來設定自己的文件緩衝區,而不使用fopen函數打開文件設定的默認緩衝區。
   定義:
    int setvbuf(FILE * stream,char * buf,int mode,size_t size);
   說明:
    在打開文件流後, 讀取內容之前, 調用setvbuf()可以用來設置文件流的緩衝區。參數stream爲指定的文件流,
     參數buf指向自定的緩衝區起始地址, 參數size爲緩衝區大小,
     參數mode有下列幾種
    _IONBF 無緩衝IO
    _IOLBF 以換行爲依據的無緩衝IO
    _IOFBF 完全無緩衝IO。如果參數buf爲NULL指針, 則爲無緩衝IO。

   除上面函數外,還有如下3個函數:
   setbuf
   setbuffer
   setlinebuf
   
   
 2.非格式化輸入輸出
   非格式化輸入輸出包括單個字節輸入輸出、字符串輸入輸出以及數據塊輸入輸出
   
   1.單個字節輸入輸出
     從文件讀一個字節
     fgetc
     getchar函數從標準輸入讀一個字節,等價於fgetc(stdin)
     向指定文件寫一個字節
     fputc
     putchar函數可以向標準輸出寫一個字節,等價於fputc(c, stdout)
   2.字符串輸入輸出
     fgets函數可以從指定的文件中讀一行字符到緩衝區中,
     
     fputs函數可以向指定的文件寫入一個字符串
     
     feof函數來測試讀寫位置是否到達文件末尾
     
   3.數據塊輸入輸出
     對文件進行輸入輸出操作,也可以以數據塊爲單位進行,所謂數據塊,是指一串固定長度的字節,從文件中
     讀取數據塊用fread函數
     
     向文件中寫入數據塊使用fwrite函數
     
     
  3.格式化輸入輸出
     格式化輸出fprintf
     printf等價於fprintf(stdout,...)
     
     格式化輸入函數爲fscanf
     scanf等價於fscanf(stdin,...)
     
     

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章