各位看官們,大家好,上一回中咱們說的是基於文件描述符進行文件操作的例子,這一回咱們說的是基於文件指針進行文件操作的例子。閒話休提,言歸正轉。讓我們一起talk C栗子吧!
看官們,在介紹文件指針前,我們先介紹一下文件流。所謂的文件流是一個抽象的概念,對文件的操作無非是向文件讀取或者寫入數據,而讀取或者寫入數據的過程是持續的,就是小河流水一樣,因此就叫把它叫作流了。當然了,這並不是命名文件流的真正原因,它是從stream這個單詞翻譯過來的。 我們常用的文件流有輸入流,輸出流和錯誤流。
明白文件流後,我們來介紹文件指針。文件指針是指向文件流的,我們可以通過文件指針來操作文件流,進而操作文件。我這麼說,大家是不是覺得,文件指針和文件描述符十分類似呢?確實是這樣。文件描述符是系統提供的,而文件指針是C標准庫提供的。就像通過文件描述符使用系統API一樣,我們可以通過文件指針使用標准庫中的函數。其實文件指針是標准庫對文件描述符的封裝,文件指針中除了包含有文件描述符外,還有一些緩沖信息。當然了,我們在編寫應用程序的時候不需要關注這些細節。
大家還記得我們在說文件描述符時介紹過的0,1,2這三個文件描述符吧,它們分別表示標准輸入,標准輸出和標准錯誤,每個進程啟動時都會自動打開這三個文件操作符,在進程結束時又會自動關閉它們。和文件描述類似,標准庫也提供了三個文件指針:
stdin 指向標准輸入流 stdout 指向標准輸出流 stderr 指向標准錯誤流這三個流也是隨著進程的啟動而且打開,隨著進程的結束而關閉。大家都知道文件描述符的數量是有限的,文件流的數量也是有限的,通常來說,我們最多可以打開16個文件流。這個與系統設置有關,我們可以通過stdio.h文件中的FOPEN_MAX來查看。
看官們,文件指針和文件描述符十分類似,因此,大家可以使用對比的方式去學習和了解他們。只要明白了其中的一種,另外一種就很容易掌握了。就當作是依葫蘆畫瓢吧,哈哈。
各位看官,關於文件操作:基於文件指針的例子咱們就說到這裡。欲知後面還有什麼例子,且聽下回分解 。