C 對二進位制檔案的讀寫操作

2021-06-27 21:39:25 字數 2909 閱讀 1130

二進位制檔案不是以ascii**存放資料的,它將記憶體中資料儲存形式不加轉換地傳送到磁碟檔案,因此它又稱為

記憶體資料的映像檔案。因為檔案中的資訊不是字元資料,而是位元組中的二進位制形式的資訊,因此它又稱為

位元組檔案。

對二進位制檔案的操作也需要先開啟檔案,用完後要關閉檔案。在開啟時要用ios::binary指定為以二進位制形式傳送和儲存。二進位制檔案除了可以作為輸入檔案或輸出檔案外,還可以是既能輸入又能輸出的檔案。這是和ascii檔案不同的地方。

對二進位制檔案的讀寫主要用istream類的成員函式read和write來實現。這兩個成員函式的原型為

istream& read(char *buffer,int len);

ostream& write(const char * buffer,int len);

字元指標buffer指向記憶體中一段儲存空間。len是讀寫的位元組數。呼叫的方式為:

a. write(p1,50);

b. read(p2,30);

上面第一行中的a是輸出檔案流物件,write函式將字元指標p1所給出的位址開始的50個位元組的內容不加轉換地寫到磁碟檔案中。在第二行中,b是輸入檔案流物件,read 函式從b所關聯的磁碟檔案中,讀入30個位元組(或遇eof結束),存放在字元指標p2所指的一段空間內。

[例13.14] 將一批資料以二進位制形式存放在磁碟檔案中。

複製

純文字新視窗

#include

using

namespace std;

struct

student

;int

main()

;ofstream

outfile

("stud.dat"

,ios::binary);

if(!outfile)

for(

int i=

0;i<

3;i++)

outfile.

write

((char

*)&stud[i],

sizeof

(stud[i]));

outfile.

close();

return0;

}

#include using namespace std;

struct student

;int main( )

; ofstream outfile("stud.dat",ios::binary);

if(!outfile)

;intmain()

for(i=

0;i<

3;i++)

infile.

read

((char

*)&stud[i],

sizeof

(stud[i]));

infile.

close();

for(i=

0;i<

3;i++)

return0;

}

#include using namespace std;

struct student

;int main( )

;int

main()

;fstream

iofile

("stud.dat"

,ios::in|ios::out|ios::binary);

//用fstream類定義輸入輸出二進位制檔案流物件iofile

if(!iofile)

for(

int i=

0;i<

5;i++)

//向磁碟檔案輸出個學生的資料

iofile.

write

((char

*)&stud[i],

sizeof

(stud[i]));

student

stud1[5];

//用來存放從磁碟檔案讀入的資料

for(

int i=

0;i<

5;i=i+2

)cout

2].num=

1012

;//修改第個學生(序號為)的資料

strcpy

(stud[

2].name,

"wu"

);stud[

2].score=60;

iofile.

seekp(2

*sizeof

(stud[

0]),ios::beg);

//定位於第個學生資料的開頭

iofile.

write

((char

*)&stud[2],

sizeof

(stud[

2]));

//更新第個學生資料

iofile.

seekg(0

,ios::beg);

//重新定位於檔案開頭

for(

int i=

0;i<

5;i++)

iofile.

close();

return0;

}

#include using namespace std;

struct student

;int main( )

; fstream iofile("stud.dat",ios::in|ios::out|ios::binary);

//用fstream類定義輸入輸出二進位制檔案流物件iofile

if(!iofile)

{cerr<<"open error!"《請注意,不能用ifstream或ofstream類定義輸入輸出的二進位制檔案流物件,而應當用fstream類。

C 對二進位制檔案的讀寫操作

二進位制檔案不是以ascii 存放資料的,它將記憶體中資料儲存形式不加轉換地傳送到磁碟檔案,因此它又稱為 記憶體資料的映像檔案 因為檔案中的資訊不是字元資料,而是位元組中的二進位制形式的資訊,因此它又稱為 位元組檔案 對二進位制檔案的操作也需要先開啟檔案,用完後要關閉檔案。在開啟時要用ios bin...

c 二進位制檔案的讀寫操作

相比於普通的文字檔案,二進位制檔案的以位元組為儲存單位多出了許多優點,下面是有關二進位制檔案的讀寫操作。主要用到兩個函式,在標頭檔案fstream中。讀read,寫write。下面詳情。一 寫操作。ofstream write char buffer,int length buffer是變數指標,一...

二進位制檔案的讀寫操作

二進位制檔案不是以 ascii 存放資料的,它將記憶體中資料儲存形式不加轉換地傳送到 磁碟檔案,因此它又稱為記憶體資料的映像檔案。因為檔案中的資訊不是字元資料,而是位元組 中的二進位制形式的資訊,因此它又稱為位元組檔案。對二進位制檔案的操作需要先開啟檔案,用完後要關閉檔案。在開啟時要用 ios bi...