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);
注意!!!!
在給檔案指標命名時,不能使用 stdin
、stdout
和 stderr
這三個名字,因為這三個名字是系統內建用於標準輸入、標準輸出、標準錯誤的檔案指標名
我們可通過 fgetc(stdin);
獲得來自標準輸入的字元
通過 fputc(ch, stdout);
將 ch
字元輸出到標準輸出
通過 fputc(ch, stderr);
將 ch
字元輸出到標準錯誤
除fgetc
和fputc
外,我們還可以使用fscanf
和fprintf
函式
我們可以使用fscanf通過檔案指標讀取:
也可以使用fprintf通過檔案指標寫出
fscanf(p1, "%c", &a); //通過檔案指標p1獲取字元並存儲到a中 fprintf(p2, "%c", a); //通過檔案指標p2將字元a寫入檔案中
這兩個函式是不是感覺有點眼熟?對!大家熟悉的scanf
和printf
和它們長得很像,那它們之間有關係嗎?
答案是有的。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
如果有寫的不對或者不全面的地方 可通過主頁的聯絡方式進行指正,謝謝!