1. 程式人生 > >C語言查缺補漏(十三)檔案操作

C語言查缺補漏(十三)檔案操作

忽略點十三:檔案操作

​ 我們要想對檔案進行讀取或寫入,需要有一個能夠訪問到該檔案的檔案指標(FILE型別),這樣我們就能通過檔案指標對檔案進行操作啦!

FILE *fp;				//宣告檔案指標
fp = fopen(檔案路徑, 訪問模式);	//指向檔案,第一個引數為字串

​ 關於訪問模式: ——只讀:“r”

​ ——只寫(覆蓋): “w”

​ —— 檔案末尾追加: “a”

​ ——可讀可寫: “r+”或“w+”

​ ——二進位制檔案:“b”

​ ——文字檔案:“t”

​ //訪問模式可以疊加,例如"rb"代表讀取二進位制檔案

​ 之後我們就可以對檔案進行操作啦(如fgetc()函式(讀取)和fputc()函式(寫入))

​ ——關於讀取:檔案指標指向檔案後,通過fgetc(fp);獲得當前指標之後位置的一個字元,每獲得一個字元指標就會自動向後移動一個字元(如果到達檔案尾部則會返回EOF

​ ——關於寫入:通過fputc(‘字元’, fp);方式將字元寫入到與fp關聯的檔案中

​ 檔案指標不再使用後需斷開關聯,格式為:

fclose(fp);	//若不加此句,程式正常結束後系統會自動為開啟的檔案呼叫fclose

​ 舉個栗子:

//省略程式碼
FILE *p1 = fopen("路徑1", "r");
FILE *p2 = fopen("路徑2", "w");
char c;
while ((c = fgetc(p1)) != EOF) {	//把一個檔案內容複製到另一個檔案
    fputc(c, p2);
}
fclose(p1);
fclose(p2);

注意!!!!

​ 在給檔案指標命名時,不能使用 stdinstdoutstderr 這三個名字,因為這三個名字是系統內建用於標準輸入、標準輸出、標準錯誤的檔案指標名

​ 我們可通過 fgetc(stdin); 獲得來自標準輸入的字元

​ 通過 fputc(ch, stdout);ch 字元輸出到標準輸出

​ 通過 fputc(ch, stderr);ch 字元輸出到標準錯誤

​ 除fgetcfputc外,我們還可以使用fscanffprintf函式

​ 我們可以使用fscanf通過檔案指標讀取:

​ 也可以使用fprintf通過檔案指標寫出

fscanf(p1, "%c", &a);		//通過檔案指標p1獲取字元並存儲到a中
fprintf(p2, "%c", a);		//通過檔案指標p2將字元a寫入檔案中

​ 這兩個函式是不是感覺有點眼熟?對!大家熟悉的scanfprintf 和它們長得很像,那它們之間有關係嗎?

​ 答案是有的。scanf可以看作是 fscanf的特例

printf可以看作是fprintf 的特例

​ 至於為什麼,看下面的程式碼:

fscanf(stdin, "%c", &a);	//等價於下一行
scanf("%c", &a);	

fprintf(stdout, "%c", &a);	//等價於下一行
printf("%c", a);

​ 嗯嗯,上面也說啦,stdin和stdout的實質也是檔案指標,分別代表從控制檯獲取,輸出到控制檯。

​ 當然啦,stdin和stdout也可以通過fclose關掉,大家可以試一下關掉後還能進行scanf和printf嘛~ 趕緊跑路hahaha

如果有寫的不對或者不全面的地方 可通過主頁的聯絡方式進行指正,謝謝!