標準io簡介
1. 標準io與三種緩衝區關聯:
(1)全緩衝
通過標準io對檔案(或裝置)進行操作時,通常緩衝區滿之後,才會進行實際的io操作(即寫到核心)。對檔案進行操作時通常使用全緩衝。
(2)行緩衝
通過標準io對檔案(或裝置)進行操作時,通常緩衝區滿之後,或者遇到換行符時,才會進行實際的io操作(即寫到核心)。標準輸入輸出通常使用行緩衝。
(3)無緩衝
每次操作通過標準io函式操作時,都會直接與核心互動操作。標準錯誤通常使用無緩衝,以盡快顯示錯誤訊息。
2. 標準io流的定向:
標準io流支援單位元組定向和多位元組定向,即設定讀取乙個字元時,是按照單位元組讀取還是按多位元組(寬位元組)讀取。關於流的定向,有以下特徵:
(1)在未定向的流上,呼叫單位元組io函式,將把流設定為單位元組定向;在未定向的流上呼叫多位元組io函式,將把流設定為多位元組定向。
(2)在未定向的流上,呼叫fwide函式,設定流的定向。
#include
int fwide(file *stream, int mode);
(3)在已定向的流上呼叫
fwide(file, 0) 查詢流的定向
(4)呼叫freopen清除流的定向
#include
file *fopen(const char *path, const char *mode);
file *fdopen(int fd, const char *mode);
file *freopen(const char *path, const char *mode, file *
stream);
3. 修改乙個流的緩衝
#include
void setbuf(file *stream, char *buf);
void setbuffer(file *stream, char *buf, size_t size);
void setlinebuf(file *stream);
int setvbuf(file *stream, char *buf, int mode, size_t size);
通常可以修改緩衝的大小,緩衝的型別,自己建立緩衝或者讓io負責建立緩衝
4. 沖洗緩衝
#include
int fflush(file *stream);
當引數為null時,將導致所有緩衝被沖洗。
5. 流的讀寫特徵
在未進行沖洗,定位等操作的情況下,一般讀未到檔案末尾,不能進行寫(輸出);
在寫時,如果呼叫沖洗,定位等操作,一般不能讀(輸入)
簡單的說,就是讀寫之間,需要有定位操作或fflush操作,根據實際的測試,該限制在(ubuntu下無效)
Linux標準I O程式設計
標準io的核心物件就是流 file結構體 1.流的開啟函式原型 file fopen const char path,const char mode 函式引數 path 要開啟的檔案路徑及檔名 mode 檔案開啟方式 函式返回值 成功 指向file指標 失敗 nullmode值 取值說明 r開啟唯讀...
Linux程式設計 標準IO(2)
簡單的檔案讀寫例項 include stdiotest.h include include void readlog printf open file success n 單位元組讀取測試 int ichar fgetc plog if eof ichar 位元組回送測試 int iput unge...
Linux程式設計 標準IO(3)
讀寫定位及格式化輸出 1.讀寫定位函式 int fseek file stream,long offset,int whence 設定檔案讀寫位置 long ftell file stream 獲取檔案讀寫位置 void rewind file stream 回到檔案開頭 可處理檔案長度大於long...