在C語言中,操作檔案之前必須先打開檔案;
<stdio.h> 頭檔案中的 fopen() 函數即可打開檔案,它的用法為:
FILE *fopen(char *filename, char *mode);
FILE 是 <stdio.h> 頭檔案中的一個結構體,它專門用來儲存檔案資訊。
filename為檔案名(或者檔案路徑),mode為打開方式,它們都是字元串。
怎樣判斷檔案是否打開成功:
FILE *fp;if( (fp=fopen("data.txt","rb") == NULL ){printf("operation failed!\n");exit(0); //退出程式(結束程式)}
打開檔案出錯時,fopen() 将傳回一個空指針,也就是 NULL,我們可以利用這一點來判斷檔案是否打開成功
最基本的檔案打開方式
打開方式 | 說明 |
---|---|
r | 以“隻讀”方式打開檔案。隻允許讀取,不允許寫入。檔案必須存在,否則打開失敗。 |
w | 以“寫入”方式打開檔案。如果檔案不存在,那麼建立一個新檔案;如果檔案存在,那麼清空檔案内容,再建立一個新檔案。 |
a | 以“追加”方式打開檔案。如果檔案不存在,那麼建立一個新檔案;如果檔案存在,那麼将寫入的資料追加到檔案的末尾。 |
r+ | 以“讀寫”方式打開檔案。既可以讀取也可以寫入,也就是随意更新檔案。檔案必須存在,否則打開失敗。 |
w+ | 以“寫入/更新”方式打開檔案,相當于w和r+疊加的效果。既可以讀取也可以寫入,也就是随意更新檔案。如果檔案不存在,那麼建立一個新檔案;如果檔案存在,那麼清空檔案内容, 再建立一個新檔案。 |
a+ | 以“追加/更新”方式打開檔案,相當于a和r+疊加的效果。既可以讀取也可以寫入,也就是随意更新檔案。如果檔案不存在,那麼建立一個新檔案;如果檔案存在,那麼将寫入的資料追加到檔案的末尾。 |
----- | 以上六種為讀寫權限字元串(必須聲明);下面兩種為讀寫方式字元串(預設為“t”), |
b | 二進制檔案。 |
t | 文本檔案,如果不寫,預設為"t"。 |
讀寫權限和讀寫方式組合使用的兩種正确方式:
- 将讀寫方式放在讀寫權限的末尾,例如:“rb”
- 将讀寫方式放在讀寫權限的中間,例如:“rb+”
檔案使用完畢應如何關閉
檔案一旦使用完畢,應該用 fclose() 函數把檔案關閉,以釋放相關資源,避免資料丢失。
示例:
#include<stdio.h>#include<stdlib.h>int main() {//本段循環代碼讀取部分可省略不看,重點在打開與關閉
FILE *fp;char ch;int count=0;if((fp=fopen("data.txt","r"))==NULL) {
printf("operation failed!\n");exit(0);}while((ch=fgetc(fp))!=EOF) { //循環讀取檔案的每一行資料if(ch=='#'||ch=='H'||ch=='T') {
count++;} else if(ch=='@') {
count+=2;}}printf("%d",count);fclose(fp); //關閉檔案的正确方式return 0;}
小結:
- fopen:<stdio.h> 頭檔案中打開檔案的函數。
- FILE: <stdio.h> 頭檔案中的一個結構體,它專門用來儲存檔案資訊。
- fclose:<stdio.h> 頭檔案中關閉先前fopen()打開的檔案的函數,此動作會讓緩沖區内的資料寫入檔案中, 并釋放系統所提供的檔案資源。