C程式設計--檔案1--檔案的分類+檔案的開啟和關閉
阿新 • • 發佈:2019-01-05
1.檔案分類
- 概念
1) ASCII檔案,又稱文字檔案,每一個位元組放一個字元的ASCII程式碼;
2)二進位制檔案,又稱映像檔案,按二進位制形式儲存。使用者一般不能直接讀懂它們,只有通過相應的軟體才能將其顯示出來。二進位制檔案一般是可執行程式、圖形、影象、聲音等等。 - 兩者的優缺點:
1.ASCII檔案:
優點:位元組與字元一一對應,便於對字元進行逐個處理;
缺點:一般佔儲存空間較多,而且要花轉換時間(二進位制形式與ASCII碼間的轉換)。
二進位制檔案編碼是變長的,所以它靈活,儲存利用率要高些,譯碼難一些(不同的二進位制檔案格式,有不同的譯碼方式)。
2.二進位制檔案:
優點:可以節省外存空間和轉換時間,把記憶體中的儲存單元中的內容原封不動的輸出到磁碟(或者其他外部介質)上。
缺點:位元組不一定代表一個字元,所以譯碼難一些(不同的二進位制檔案格式,有不同的譯碼方式)
檔案的開啟和關閉
- 開啟檔案
- 您可以使用 fopen( ) 函式來建立一個新的檔案或者開啟一個已有的檔案,這個呼叫會初始化型別 FILE 的一個物件,型別 FILE 包含了所有用來控制流的必要的資訊。下面是這個函式呼叫的原型:
FILE *fopen( const char * filename, const char * mode );
即:FILE *fopen( 檔名, 訪問方式 );
- 返回值:返回一個指向檔名的指標,即檔案資訊區的起始地址,通常將fopen函式的返回值賦給一個指向檔案的指標變數。如:
FILE *fp; //定義一個指向檔案的指標變數fp
fp=fopen(“D:\\file\\test.txt”,“r”); //將fopen函式的返回值賦給指標變數fp
如果開啟失敗,fopen函式會帶回一個空指標NULL。出錯的原因可能:
①用 “r” 或 “a” 方式開啟一個並不存在的檔案;
②磁碟故障
③磁碟已滿,無法建立新檔案
等等
所以常用如下方法開啟檔案:
if((fp=fopen(“file”,“r”))==null){
printf(“cannot open this file\n”);
exit(0);//需要標頭檔案 #include<stdlib.h>
}
- 在這裡,filename 是字串,用來命名檔案,ASCII檔案訪問模式 mode 的值可以是下列值中的一個:
如果處理的是二進位制檔案,則需使用下面的訪問模式來取代上面的訪問模式:
“rb”(只讀), “wb”(只寫), “ab”(追加),
“rb+”(讀寫), “r+b”(讀寫), “wb+”(讀寫), “w+b”(讀寫), “ab+”(讀寫), “a+b”(讀寫)
- 關閉檔案
- 為了關閉檔案,請使用 fclose( ) 函式。函式的原型如下:
int fclose( FILE *fp );
即:int fclose( 檔案指標);
- 返回值:
如果成功執行關閉操作,則返回 0;
否則返回 EOF(-1);