一旦開啟了流,則可在三種不同型別的非格式化i/o中進行選擇,對其進行讀、寫操作:
1. 輸入函式
以下三個函式可用於一次讀乙個字元:
三個函式的返回值:成功返回值下乙個字元,已到達檔案結尾或出錯則返回eof
getchar等價於getc(stdio)。前兩個函式的區別是getc可被實現為巨集,而fgetc則不能實現為巨集。這意味著:
getc的引數不應當是具有***的表示式。
因為fgetc一定是乙個函式,所以可以得到其位址。這就允許將fgetc的位址作為乙個引數傳送給另乙個函式。
呼叫fgetc所需時間很可能長於呼叫getc,因為呼叫函式通常所需的時間長於呼叫巨集。
注意,不管是出錯還是到達檔案尾端,這三個函式都會返回同樣的值。為了區分這兩種不同的情況,必須呼叫ferror或feof。
條件為真返回非0值,否則返回0。
在大多數實現中,為每個流在file物件中維持了兩個標誌:
呼叫clearerr則清除這兩個標誌。
從流中讀取資料以後,可以呼叫ungetc將字元再押送回流中。
返回值:成功返回c,出錯返回eof
押送回到流中的字元以後又可從流中讀出,但讀出字元的順序與押送回的順序相反。應當了解,雖然iso c允許實現支援任何次數的回送,但是它要求實現提供一次只送回乙個字元,不能期望一次能送回多個字元。
回送的字元不必一定是上一次讀到的字元。不能回送eof。但是當已經到達檔案尾端時,仍可以回送一字元。下次讀將返回該字元,再次讀則返回eof。之所以能這樣的原因是一次成功ungetc呼叫會清除該流的檔案結束標誌。
2. 輸出函式
對應於上面所述的每個輸入函式都有乙個輸出函式。
返回值:成功返回c,出錯返回eof
與輸入函式一樣,putchar(c)等效於putc(c, stdout),putc可實現為巨集,而fputc則不能實現為巨集。
IO流的讀與寫
streamreader是專門用來讀取文字檔案的類,streamreader可以從底層stream物件建立streamreader物件的例項,而且也能指定編碼規範引數。建立streamreader物件後,它提供了許多用於讀取和瀏覽字元資料的方法 public static void main str...
標準IO庫 開啟流
開啟標準io流函式 include file fopen const char pathname,const char type file freopen const char pathname,const char type,file file fdopen int filedes,const c...
C 流與標準IO庫
流 資料在計算機裝置和記憶體之間移動,其基本單位為字元,故將其形象地稱為流。中把輸入輸出流定義為類,這裡的輸入 輸出是針對記憶體而言的。流類的物件稱為流物件。每個流物件在記憶體中有自己的緩衝區用於暫存資料。流物件不能複製或賦值,但可以將其引用或指向流物件的指標作為函式的引數或者返回值。第四版 中主要...