標準I O函式庫

2021-07-26 22:14:18 字數 1306 閱讀 2009

標準i/o函式庫:

c標準庫提供了檔案的標準 i/o 函式庫,相比前述的系統呼叫,主要差別是實現了跨平台的使用者態緩衝的解決方案。標準i/o庫使

用簡單,與系統呼叫i/o相似,也包括開啟、讀寫、關閉這些操作,主要的函式列舉如下。

◆ 開啟與關閉檔案:fopen,fclose。

◆ 讀寫檔案:fread,fwrite。

◆ 讀寫文字行:fgets,fputs。

◆ 格式化讀寫:fscanf,fprintf。

◆ 標準輸入輸出:printf,scanf。

◆ 讀寫字元:fgetc,getc,getchar,fputc,putc,putchar。

◆ 其他:fflush,fseek。

所謂標準 i/o 函式實際上是對底層系統呼叫的包裝,最終讀寫裝置或檔案的操作仍需呼叫系統i/o函式來完成。

1. 兩種i/o操作:

一類是f打頭的fopen, fread, fwrite

一類是沒有f打頭的open, read, fwrite

原來乙個是unix i/o(在類unix系統上實現),另一類是標準i/o(在很多系統上都有實現,包括windows)。

2.  使用標準i/o的好處

因為在出unix的很多作業系統(包括windows, linux)上都實現了此庫,所有有利於軟體的移植。

3. 與unixi/o的主要區別

unix i/o的函式都是針對檔案描述符的,而標準i/o的操作都是圍繞流進行的。所為的流就是乙個file *

標準i/o提供了快取--為了儘量減少write, read的呼叫。

標準i/o的效率會低一些,因為它是多了一層封裝。即,fread通過呼叫read來實現。

4. 標準i/o的標頭檔案

stdio.h

三個標準i/o流預定義指標:stdin, stdout, stderr

(unix i/o: stdin_fileno, stdout_fileno, stderr_fileno)

5. 快取

有快取就會有延遲,即輸出裝置上的內容和快取中的內容很可能不一樣。可以呼叫fflush重新整理快取。

有多種快取型別,可以呼叫下面的api來更改預設快取型別。

setbuf,  setvbuf

setvbuf可以精確的說明快取的型別。

fclose關閉流時也會重新整理流。

當乙個程序正常終止時(直接呼叫exit,或從main函式返回),則所有帶未寫快取資料的標準i/o流都會被重新整理,所有開啟的標準i/o流都會被關閉。

標準I O函式庫的緩衝

標準i o函式庫執行以下三類緩衝 1,完全緩衝意味著只在出現下列情況時才發生i o緩衝 緩衝區滿,程序顯示呼叫fflush,或者程序呼叫exit終止 標準i o緩衝區的通常大小為8192位元組。2,行緩衝意味著只是在出現下列情況時才發生i o 碰到乙個換行符,程序呼叫fflush,或者程序呼叫exi...

標準函式庫

1 rand與srand函式產生偽隨機數 cpp view plain copy print?intrand void void srand unsigned intseed rand返回乙個範圍在0和rand max之間的偽隨機數,為了避免程式每次執行時獲得相同的隨機數序列,可以使用srand函式...

貫穿案例 構建標準IO函式庫 1

ifndef xx h define xx h endif extern可以置於變數或者函式前,以標示變數或者函式的定義在別的檔案中,提示編譯器遇到此變數和函式時在其他模組中尋找其定義。最好不要在標頭檔案中定義變數 關鍵字 extern 修飾變數 只能用於擴充套件沒有被static關鍵字修飾的全域性...