標準I/O庫

相較於系統調用的I/O函數,標準庫I/O函數相較於系統調用提供了緩衝區的分配以及以優化長度的塊執行I/O等,當我們用標準I/O函數打開或創建一個文件時,就將一個流與文件相關聯起來,流的定向決定了所讀寫的流是單字節或雙字節的。
打開流的函數有fopen,freopen,fdopen,他們返回指向FILE對象的指針,對象通常是一個結構,其包含了管理該流所需的所有信息,包括實際I/O的文件描述符,指向該流緩衝區的指針,緩衝區的長度,緩衝區中的字符數以及出錯標誌等。
一旦打開了流,有三種不同類型的非格式化I/O進行選擇,對其進行讀寫操作。分別爲每次一個字符的I/O,每次一行的I/O以及直接I/O,其中要注意的是gets函數不能指定緩衝區長度,就可能會造成緩衝區溢出而引起錯誤。推薦使用fgets。可用3種方法定位標準I/O流,ftell和fseek;ftello和fseeko,以及fgetpos與fsetpos。
iso c標準I/O庫提供了2個函數以幫助創建臨時文件,分別爲tmpnam,tmpfile。其中tmpnam返回與現有路徑名不同的有效路徑名字符串,tmpfile則創建臨時二進制文件。tmpfile實現的標準技術是先用tmpnam,再創建一個文件馬上unlink它,這樣進程結束時,文件就被自動關閉。同時SUS提供了mkdtemp與mkstemp,其是原子操作。
內存流是使所有I/O都提供緩衝區與主存之間的字節傳輸。可用fmemopen函數創建內存流,

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