咱們對文件的概念已經很是熟悉了,好比常見的 Word 文檔、txt 文件、源文件等。文件是數據源的一種,最主要的做用是保存數據。程序員
在操做系統中,爲了統一對各類硬件的操做,簡化接口,不一樣的硬件設備也都被當作一個文件。對這些文件的操做,等同於對磁盤上普通文件的操做。例如:數據庫
一般把顯示器稱爲標準輸出文件,printf 就是向這個文件輸出數據;編程
一般把鍵盤稱爲標準輸入文件,scanf 就是從這個文件讀取數據。數組
常見硬件設備所對應的文件網絡
文件 硬件設備編程語言
stdin 標準輸入文件,通常指鍵盤;scanf()、getchar() 等函數默認從 stdin 獲取輸入。函數
stdout 標準輸出文件,通常指顯示器;printf()、putchar() 等函數默認向 stdout 輸出數據。學習
stderr 標準錯誤文件,通常指顯示器;perror() 等函數默認向 stderr 輸出數據(後續會講到)。操作系統
stdprn 標準打印文件,通常指打印機。設計
咱們不去探討硬件設備是如何被映射成文件的,你們只須要記住,在C語言中硬件設備能夠當作文件,有些輸入輸出函數不須要你指明到底讀寫哪一個文件,系統已經爲它們設置了默認的文件,固然你也能夠更改,例如讓 printf 向磁盤上的文件輸出數據。
操做文件的正確流程爲:打開文件 --> 讀寫文件 --> 關閉文件。文件在進行讀寫操做以前要先打開,使用完畢要關閉。
所謂打開文件,就是獲取文件的有關信息,例如文件名、文件狀態、當前讀寫位置等,這些信息會被保存到一個 FILE 類型的結構體變量中。關閉文件就是斷開與文件之間的聯繫,釋放結構體變量,同時禁止再對該文件進行操做。
在C語言中,文件有多種讀寫方式,能夠一個字符一個字符地讀取,也能夠讀取一整行,還能夠讀取若干個字節。文件的讀寫位置也很是靈活,能夠從文件開頭讀取,也能夠從中間位置讀取。
文件流
在《載入內存,讓程序運行起來》一文中提到,全部的文件(保存在磁盤)都要載入內存才能處理,全部的數據必須寫入文件(磁盤)纔不會丟失。
數據在文件和內存之間傳遞的過程叫作文件流,相似水從一個地方流動到另外一個地方。數據從文件複製到內存的過程叫作輸入流,從內存保存到文件的過程叫作輸出流。
若是你也想成爲程序員,想要快速掌握編程,趕忙關注小編加入學習企鵝圈子吧!
裏面有資深專業軟件開發工程師,在線解答你的全部疑惑~編程語言入門「so easy」
資料包含:編程入門、遊戲編程、課程設計等。
免費學習書籍:
免費學習資料:
文件是數據源的一種,除了文件,還有數據庫、網絡、鍵盤等;數據傳遞到內存也就是保存到C語言的變量(例如整數、字符串、數組、緩衝區等)。
咱們把數據在數據源和程序(內存)之間傳遞的過程叫作數據流(Data Stream)。
相應的,數據從數據源到程序(內存)的過程叫作輸入流(Input Stream),從程序(內存)到數據源的過程叫作輸出流(Output Stream)。
輸入輸出(Input output,IO)是指程序(內存)與外部設備(鍵盤、顯示器、磁盤、其餘計算機等)進行交互的操做。
幾乎全部的程序都有輸入與輸出操做,如從鍵盤上讀取數據,從本地或網絡上的文件讀取數據或寫入數據等。經過輸入和輸出操做能夠從外界接收信息,或者是把信息傳遞給外界。
咱們能夠說,打開文件就是打開了一個流。