天天看點

關于fopen函數

在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"。

讀寫權限和讀寫方式組合使用的兩種正确方式:

  1. 将讀寫方式放在讀寫權限的末尾,例如:“rb”
  2. 将讀寫方式放在讀寫權限的中間,例如:“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;}      

小結:

  1. fopen:<stdio.h> 頭檔案中打開檔案的函數。
  2. FILE: <stdio.h> 頭檔案中的一個結構體,它專門用來儲存檔案資訊。
  3. fclose:<stdio.h> 頭檔案中關閉先前fopen()打開的檔案的函數,此動作會讓緩沖區内的資料寫入檔案中, 并釋放系統所提供的檔案資源。

繼續閱讀