對文字檔案的讀寫參考該文。
檔案按資料在檔案中的儲存形式,分為文字檔案,即檔案中的字元都是以ascii碼的形式儲存;
如3.14 以文字檔案形式儲存,每個字元佔乙個位元組,共佔4個位元組;
二進位制檔案,是將資料按其在記憶體中的儲存形式(二進位製碼)的形式儲存的。
如3.14以二進位制檔案儲存,用float型別佔4個位元組,用double型別佔8個位元組。
本文討論以二進位制檔案形式儲存的各個函式。以文字形式儲存檔案參見該文
鍵盤是標準輸入檔案:stdin
顯示器是標準輸出檔案:stdout
標準錯誤檔案:stderr
二進位制檔案的開啟,關閉與文字檔案的開啟、關閉類似,參照該文。
開啟讀/寫
關閉fopen()
fread()
fclose()
fwrite()
返回值為1,檔案結束;
返回值為0,檔案沒有結束。
因為文字檔案中,資料是以ascii碼值形式存放的,而ascii碼值的範圍是0-255,不會等於-1.
注意:在未close檔案前,對檔案進行多次write,是不會清除檔案中原來的資料的。
1)fread
fread(buffer,size,count,fp)
buffer:指標,表示記憶體中儲存空間的首位址;
count:要讀寫的單元數
size:每單元的位元組數
fp:檔案指標。
從fp所指的檔案中讀count個單元,每個單元size個位元組,到以buffer為起始位址的記憶體中
例如:int a[2];
fread(a,4,2,fp);
2)fwrite
fwrite(buffer,size,count,fp)
buffer:指標,表示記憶體中儲存空間的首位址;
count:要讀寫的單元數
size:每單元的位元組數
fp:檔案指標。
將以buffer為起始位址記憶體中的count個單元,每個單元size個位元組寫到fp所指的檔案中。
例如:int a[2]=;
fwrite(a,4,2,fp); 將以a為起始位址的記憶體中的2個單元,每單元4個位元組,寫到fp所指的檔案中。
順序儲存的時候,對檔案讀寫操作是從檔案的開始位置進行的,
隨機訪問檔案可以從從檔案的任意位置進行操作的。
fopen的時候,檔案位置指標指向檔案的開頭,第乙個資料之前;
檔案結束後,檔案位置指標指向檔案的結尾,最後乙個資料之後。
對資料進行讀操作,檔案位置指標指向尚未讀資料之前;
對資料進行寫操作,檔案位置指標指向剛寫入的資料之後。
1)fseek(fp,offset,origin); //一般用於二進位制檔案,因為文字檔案會發生字元轉換,計算位置會發生混亂。
offset為以origin為幾點,以位元組為單位的偏移量;當offset為正整數,表示位置指標從指定的起始點向後移動,當offset為負整數的時候,表示位置指標從指定的起始點向前移動。
起始點位置
巨集定義巨集定義值
檔案起始位置
seek_set
0檔案當前位置
seek_cur
1檔案末尾位置
seek_edn
2返回到檔案開頭位置:
fseek(fp,0l,seek_set); //檔案第乙個資料之前?(指向檔案第一資料)
返回到檔案末尾位置:
fseek(fp,0l,seek_end); //檔案最後乙個資料之後
2)ftell函式
獲得檔案當前位置指標的位置,並返回當前位置指標相對於檔案開頭的位元組數。
ftell(檔案指標)
例如:計算檔案的中總的位元組數
fseek(fp,0l,seek_end);
long size = ftell(fp);
3)rewind函式
rewind(fp);
使檔案指標返回到檔案開頭位置。
等價於fseek(fp,0l,seek_set);
C 對二進位制檔案的讀寫操作
二進位制檔案不是以ascii 存放資料的,它將記憶體中資料儲存形式不加轉換地傳送到磁碟檔案,因此它又稱為 記憶體資料的映像檔案。因為檔案中的資訊不是字元資料,而是位元組中的二進位制形式的資訊,因此它又稱為 位元組檔案。對二進位制檔案的操作也需要先開啟檔案,用完後要關閉檔案。在開啟時要用ios bin...
C 對二進位制檔案的讀寫操作
二進位制檔案不是以ascii 存放資料的,它將記憶體中資料儲存形式不加轉換地傳送到磁碟檔案,因此它又稱為 記憶體資料的映像檔案 因為檔案中的資訊不是字元資料,而是位元組中的二進位制形式的資訊,因此它又稱為 位元組檔案 對二進位制檔案的操作也需要先開啟檔案,用完後要關閉檔案。在開啟時要用ios bin...
C 的二進位制檔案操作
1 數值應儲存在二進位制檔案 首先列舉文字 二進位制檔案的操作 讀寫 方法 方式 1 讀取 拷貝 刪除 using system using system.io class test 讀取檔案 using streamreader sr file.opentext path 刪除 拷貝 try ca...