歸納編程學習的感悟,
記錄奮斗路上的點滴,
希望能幫到一樣刻苦的你!
如有不足歡迎指正!
共同學習交流!
🌎歡迎各位→點贊 👍+ 收藏? + 留言?📝
我輩皆凡人,用一生鋪就的,走到終點也不過是平凡之路。
但只要不忘初心,砥礪前行,再渺小的無名之輩,亦有華彩。
?一起加油!?
?
目錄
💦前言:
💦文件的基本的概念:
💦文件類型和常用函數:?
💦文件的打開與關閉?:
💦簡單文件操作的例子 :
💦前言:
? ? ? ??如果你在計算機上調試過 C 語言程序,一定有保存程序的概念。保存程序就是將編輯好的 C語言程序以文件的形式存儲在計算機的外存儲器上,比如存儲在磁盤上,形成源程序文件。對源程序進行編譯、鏈接后會產生目標文件(.obj)和可執行文件(.exe)。
????????在前面的程序中,程序處理的數據往往需要從鍵盤輸入,程序處理的結果總是輸出到顯示器上。在程序調試過程中,每運行一次程序就要輸入一次數據,如果輸入數據較多,則是一件相當麻煩的事情,也容易出錯。為了使數據可重復、永久使用,可將程序處理的數據存放在文件中,需要時將文件中的數據讀入內存,供程序處理。同樣,程序的處理結果也可以保存在文件中,供其他程序使用或顯示輸出。事實上,計算機處理的諸如數字、文字、圖形、聲音、圖像、視頻等大量的數據都是存儲在文件中的。
💦文件的基本的概念:
????????文件是信息的集合。在 C 語言中,包括磁盤文件和設備文件。磁盤文件是存儲在磁盤上的信息的集合,而所有能進行輸入/輸出的終端設備都被視為設備文件。如鍵盤是標準輸入文件,顯示器是標準輸出文件。如果文件中存儲的是程序,這樣的文件稱為程序文件;如果文件中存儲的是供程序處理的數據,則稱為數據文件。C 語言把文件視為一個字節(字符)序列,即文件是由字節(字符)組成的序列,允許以字節(字符)為單位進行讀/寫。就好像在程序和文件或設備之間有字節流在流動,所以將這種組織形式和存取方式的文件形象地稱為流式文件。
????????根據數據的組織形式,可以把文件分為兩類: 文本文件和二進制文件。文本文件中的每個字節存放一個 ASCII碼,代表一個字符。二進制文件中的數據以數據在內存中的形式存放。?
????????文本文件中的一個字節對應一個字符,便于對字符逐個處理,也便于輸出字符;但一般要占用較多的磁盤空間,而且在讀入內存或寫入文件時要進行格式轉換,需要轉換時間。二進制文件中的數據格式與數據在內存的存儲形式相同,占用較少的磁盤空間,讀入內存或寫入文件時也不進行格式轉換,數據的輸入/輸出速度較快。
????????對流式文件的處理方式有兩種,緩沖文件系統和非緩沖文件系統。所謂緩沖文件系統是指系統自動地為每個正在使用的文件開辟一個緩沖區(內存的某個特定區域); 如果從內存向磁盤寫數據,數據先寫入緩沖區中,當緩沖區寫滿之后或文件關閉時,才把緩沖區的內容一次全部寫入磁盤文件;如果從磁盤讀數據到內存,系統先一次性從磁盤文件讀入一批數據送入內存緩沖區,然后再從緩沖區取數據供程序處理。非緩沖文件系統不會為使用的文件自動建立緩沖區,程序需為每個文件設定緩沖區。
????????在傳統的 UNIX 系統中,用緩沖文件系統處理文本文件,而用非緩沖文件系統處理二進制文件。由于這兩種文件系統中有許多功能是重疊的,因此 ANSI C 標準建議只保留緩沖文件系統,并擴展了它的功能。這樣在 ANSI C 中,緩沖文件既用于處理文本文件,又用于處理二進制文件。
💦文件類型和常用函數:?
????????C 語言中沒有輸入/輸出語句,對文件的所有操作都是用庫函數實現的。下面是與文件操作有關的類型定義和常用函數的原型,這些內容可參考頭文件 stdio.h。
????????文件類型定義
文件操作函數原型?
💦文件的打開與關閉?:
????????對文件操作的步驟一般有三步: 1.打開文件;2.對文件進行讀/寫:3關閉文件所謂打開文件,就是建立程序和文件之間的通信通道,并為文件操作建立緩沖區。語言程序通過文件類型指針與文件建立聯系,程序中的一個文件類型指針就代表一個文件文件打開后,就可以使用庫函數對文件進行讀/寫操作了。程序結束或不再繼續使用文件時要關閉文件。關閉文件的目的是要釋放相關的資源,如緩沖區等。
💦簡單文件操作的例子 :
????????題目1顯示:在 C盤根目錄下建立一個名為 abc.txt 的文本文件,從鍵盤輸入一些字符寫入該文件中,直到輸入一個^Z(Ctrl+Z)為止(^Z 是鍵盤輸入的文件結束標志)。
#include<stdio.h>
#include<stdlib.h>
int main(){char ch;FILE *fp;//定義文件類型指針if((fp=fopen("abc.txt","w"))==NULL){//以寫方式打開文本文件 printf("Can not open file\n");exit(1);} ch=getchar();while(ch!=EOF){//不是ctrl+c就循環 fputc(ch,fp);//寫字符到文件 ch=getchar();//從鍵盤讀入下一個字符 }fclose(fp);//關閉文件
}
????????程序中的語句“ch=getchar ();”還可寫成“ch-fgetc(stdin);”,其作用是從標準輸入設備(鍵盤)讀入一個字符。?
運行
????????題目2: 顯示題目1中建立文件abc.txt中的內容
#include<stdio.h>
#include<stdlib.h>
int main(){char ch;FILE *fp;//定義文件類型指針 if((fp=fopen("abc.txt","r"))==NULL){//以讀方式打開文本文件 printf("Can not open file\n");exit(1);} ch=fgetc(fp);//從文件中讀入一個字符 while(ch!=EOF){//不是文件尾則循環 putchar(ch);//顯示字符 ch=fgetc(fp);//從文件讀入下一個字符 }fclose(fp);//關閉文件
}
運行?
???????????最后,希望本篇文章對你有所幫助,也希望可以支持支持博主,后續博主也會定期更新學習記錄,記錄學習過程中的點點滴滴。若這篇文章中有哪些不正確的內容,歡迎大家在評論區和我交流討論!