1. Trang chủ
  2. » Luận Văn - Báo Cáo

BÁO CÁO LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Tìm hiểu về vàora với tệp nhị phân (binary file),

34 394 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 34
Dung lượng 303,5 KB

Nội dung

3.Đ c m t đ i t ọc một đối tượng từ tệp nhị phân ột đối tượng vào tệp nhị phân ối tượng vào tệp nhị phân ượng vào tệp nhị phân ng t t p nh phân ừ tệp nhị phân ệp nhị phân ị phân//doc doi

Trang 1

Báo Cáo Bài T p L n ập Lớn ớn

Gi ng viên hảng viên hướng dẫn: ướnng d n: ẫn: Ngô Công Th ng ắng

Nhóm sinh viên th c hi n :(Nhóm 10)ực hiện :(Nhóm 10) ện :(Nhóm 10)

Nguy n Th Senễn Thị Sen ị Sen

Nguy n Th Di pễn Thị Sen ị Sen ện :(Nhóm 10)

Ph m Ng c Th ngạm Ngọc Thắng ọc Thắng ắng

Hoàng Th Ngaị Sen

L p: Tin H c C-k52ớn ọc Thắng

Trang 2

Ph n 1:Lý Thuy t ần 1:Lý Thuyết ết

A.Tìm hi u v vào/ra v i t p nh phân ểu về vào/ra với tệp nhị phân ề vào/ra với tệp nhị phân ới tệp nhị phân ệp nhị phân ị phân

1.Vào ra t p nh phân b ng read và write ện :(Nhóm 10) ị Sen ằng read và write

2.Ghi m t đ i t ột đối tượng vào tệp nhị phân ối tượng vào tệp nhị phân ượng vào tệp nhị phân ng vào t p nh phân ện :(Nhóm 10) ị Sen

3.Đ c m t đ i t ọc Thắng ột đối tượng vào tệp nhị phân ối tượng vào tệp nhị phân ượng vào tệp nhị phân ng t t p nh phân ừ tệp nhị phân ện :(Nhóm 10) ị Sen

B.K thu t b t l i vào ra t p ỹ thuật bắt lỗi vào ra tệp ật bắt lỗi vào ra tệp ắng ỗi vào ra tệp ệp nhị phân

C Con tr t p ỏ tệp ệp nhị phân

1.Khái ni m ện :(Nhóm 10)

2.Toán t l y đ a ch (&) ử lấy địa chỉ (&) ấy địa chỉ (&) ị Sen ỉ (&).

3.Toán t tham chi u ử lấy địa chỉ (&) ếu

Trang 3

A Tìm hi u v vào/ra v i t p nh phân ểu về vào/ra với tệp nhị phân ề vào/ra với tệp nhị phân ới tệp nhị phân ệp nhị phân ị phân

 Đ m m t t p dể mở một tệp dưới chế độ nhị phân, ta dùng cú ở một tệp dưới chế độ nhị phân, ta dùng cú ột đối tượng vào tệp nhị phân ện :(Nhóm 10) ướni ch đ nh phân, ta dùng cú ếu ột đối tượng vào tệp nhị phân ị Sen

pháp sau:

fstream <Tên bi n t p> (<Tên t p>, ios: : binary) ;ếu ện :(Nhóm 10) ện :(Nhóm 10)

 Khi đó, các thao tác đ c, ghi trên bi n t p đọc Thắng ếu ện :(Nhóm 10) ượng vào tệp nhị phânc th c ực hiện :(Nhóm 10)

hi nện :(Nhóm 10)

 Theo đ n v byte theo kích thơn vị byte theo kích thước các bản ghi (cấu ị Sen ướnc các b n ghi (c u ảng viên hướng dẫn: ấy địa chỉ (&)

trúc) đượng vào tệp nhị phânc ghi trong t p.ện :(Nhóm 10)

Ví d : ụ: Mu n m t p tin baitho.txt dối tượng vào tệp nhị phân ở một tệp dưới chế độ nhị phân, ta dùng cú ện :(Nhóm 10) ướni ch đ nh ếu ột đối tượng vào tệp nhị phân ị Sen

fstream myBaiTho (“baitho.txt”, ios: :binary);

Trang 4

1.Vào ra t p nh phân b ng read và write ệp nhị phân ị phân ằng read và write

a Ghi vào t p nh phân b ng write: ệp nhị phân ị phân ằng read và write

 Các bướnc th c hi n đ ghi d li u vào m t t p nh ực hiện :(Nhóm 10) ện :(Nhóm 10) ể mở một tệp dưới chế độ nhị phân, ta dùng cú ữ liệu vào một tệp nhị ện :(Nhóm 10) ột đối tượng vào tệp nhị phân ện :(Nhóm 10) ị Sen

 M t p tin theo ch đ đ ghi nh phân b ng đ i ở một tệp dưới chế độ nhị phân, ta dùng cú ện :(Nhóm 10) ếu ột đối tượng vào tệp nhị phân ể mở một tệp dưới chế độ nhị phân, ta dùng cú ị Sen ằng read và write ối tượng vào tệp nhị phân

tượng vào tệp nhị phânng fstream:

fstream <Tên bi n t p> (<Tên t p tin>, ios: : out I ếu ện :(Nhóm 10) ện :(Nhóm 10)

ios: : binary) ;

 Ghi d li u vào t p b ng thao tác “write()”:ữ liệu vào một tệp nhị ện :(Nhóm 10) ện :(Nhóm 10) ằng read và write

<Tên bi n t p> write (char* <D li u>,ếu ện :(Nhóm 10) ữ liệu vào một tệp nhị ện :(Nhóm 10)

int <Kích thướnc d li u>) ;ữ liệu vào một tệp nhị ện :(Nhóm 10)

 Đóng t p tin b ng l nh close():ện :(Nhóm 10) ằng read và write ện :(Nhóm 10)

<Tên bi n t p>.close ( ) ;ếu ện :(Nhóm 10)

Trang 5

 Trong đó, thao tác write nh n hai tham s ập Lớn ối tượng vào tệp nhị phân

Đ u vào nh sau:ầu vào như sau: ư

 Tham s th c nh t: là con tr ki u char tr đ n ối tượng vào tệp nhị phân ức nhất: là con trỏ kiểu char trỏ đến ấy địa chỉ (&) ỏ tệp ể mở một tệp dưới chế độ nhị phân, ta dùng cú ỏ tệp ếu

vùng d li u c n ghi và t p Vì con tr b t bu c có ữ liệu vào một tệp nhị ện :(Nhóm 10) ầu vào như sau: ện :(Nhóm 10) ỏ tệp ắng ột đối tượng vào tệp nhị phân

ki u char nên khi mu n ghi d ki u có ki u khác vào ể mở một tệp dưới chế độ nhị phân, ta dùng cú ối tượng vào tệp nhị phân ữ liệu vào một tệp nhị ện :(Nhóm 10) ể mở một tệp dưới chế độ nhị phân, ta dùng cú

t p, ta dùng hàm chuy n ki u: ện :(Nhóm 10) ể mở một tệp dưới chế độ nhị phân, ta dùng cú ể mở một tệp dưới chế độ nhị phân, ta dùng cú

reinterpret_cast<char *> (<D li u>) ;ữ liệu vào một tệp nhị ện :(Nhóm 10)

 Tham s th hai là kích c d li u đối tượng vào tệp nhị phân ức nhất: là con trỏ kiểu char trỏ đến ỡ dữ liệu được ghi vào tệp ữ liệu vào một tệp nhị ện :(Nhóm 10) ượng vào tệp nhị phânc ghi vào t p ện :(Nhóm 10)Kích c này đớn ượng vào tệp nhị phânc tính theo byte, nên thông thường ng

ta dùng toán t :ử lấy địa chỉ (&)

sizeof (<Ki u d li u>) ;ể mở một tệp dưới chế độ nhị phân, ta dùng cú ữ liệu vào một tệp nhị ện :(Nhóm 10)

Trang 6

 Các bướnc th c hi n đ đ c d li u t m t t p tin nh ực hiện :(Nhóm 10) ện :(Nhóm 10) ể mở một tệp dưới chế độ nhị phân, ta dùng cú ọc Thắng ữ liệu vào một tệp nhị ện :(Nhóm 10) ừ tệp nhị phân ột đối tượng vào tệp nhị phân ện :(Nhóm 10) ị Sen

 M t p tin theo ch đ đ đ c nh phân b ng đ i ở một tệp dưới chế độ nhị phân, ta dùng cú ện :(Nhóm 10) ếu ột đối tượng vào tệp nhị phân ể mở một tệp dưới chế độ nhị phân, ta dùng cú ọc Thắng ị Sen ằng read và write ối tượng vào tệp nhị phân

tượng vào tệp nhị phânng fstream ( m t p tin ch đ ghi): fstream ở một tệp dưới chế độ nhị phân, ta dùng cú ện :(Nhóm 10) ỉ (&) ể mở một tệp dưới chế độ nhị phân, ta dùng cú <Tên bi n t p> (<Tên t p tin>, ios: : I ios: :binary) ;ếu ện :(Nhóm 10) ện :(Nhóm 10)

 Đ c d li u t t p b ng thao tác “read()”:ọc Thắng ữ liệu vào một tệp nhị ện :(Nhóm 10) ừ tệp nhị phân ện :(Nhóm 10) ằng read và write

<Tên bi n t p>.read (char* <D li u ra>,ếu ện :(Nhóm 10) ữ liệu vào một tệp nhị ện :(Nhóm 10)

int <Kích thướnc d li u>) ;ữ liệu vào một tệp nhị ện :(Nhóm 10)

 Đóng t p tin b ng l nh close():ện :(Nhóm 10) ằng read và write ện :(Nhóm 10)

<Tên bi n t p>.close( ) ;ếu ện :(Nhóm 10)

b Đ c d li u t t p nh phân b ng ọc dữ liệu từ tệp nhị phân bằng ữ liệu từ tệp nhị phân bằng ệp nhị phân ừng phần tử của tệp ệp nhị phân ị phân ằng read và write

read

Trang 7

2 Ghi m t đ i t ột đối tượng vào tệp nhị phân ối tượng vào tệp nhị phân ượng vào tệp nhị phân ng vào t p nh phân ệp nhị phân ị phân

//ghi đoi tuong person ra dia

#include<fstream.h>// cho vao ra file

class person //lop person

{

protected:

char name[40]; //ten nguoi

int age; //tuoi

public:

void getData() //lay du lieu

{

cout<<”\nNhap vao ten:”;cin>>name;

cout<<”\nNhap vao tuoi:”;cin>>age;

}

Trang 8

void main()

{

person pers;//tao mot doi tuong person

pers.getData();//lay du lieu cho nguoi

ofstream outfile(“PERSON.DAT”,ios::binary);tao mot doi tuong ofstream

outfile.write((char*)&pers,sizeof(pers)); //ghirano }

Trang 9

3.Đ c m t đ i t ọc một đối tượng từ tệp nhị phân ột đối tượng vào tệp nhị phân ối tượng vào tệp nhị phân ượng vào tệp nhị phân ng t t p nh phân ừ tệp nhị phân ệp nhị phân ị phân

//doc doi tuong person tu dia

#include<fstream.h> //cho vao ra file

class person //lop person

{

protected:

char name[40]; //ten nguoi

int age; //tuoi

public:

void showData()//hien thi du lieu

{ cout<<”\nTen:”<<name;

cout<<”\nTuoi:”<<age;

} };

Trang 10

void main()

{

person pers; //tao mot doi tuong person

ifstream infile(“PERSON.DAT”,ios::binary);//tao mot doi tuong ifstream

infile.read((char*)&pers,sizeof(pers));//doc no }

Trang 11

4 Vào ra nhi u đ i t ều đối tượng ối tượng vào tệp nhị phân ượng vào tệp nhị phân ng

//doc va ghi doi tuong person ra dia

#include<fstream.h> //cho va ra file

Class person //lop person

{

protected:

char name[40]; //ten nguoi

public:

{

cout<<”\nNhap vao ten:”;cin>>name;

cout<<”\nNhap vao tuoi:”;cin>>age;

Trang 12

void main()

{

person pers;//tao mot bien person

char ch;

fstream file;//tao mot file vao va ra

//mo de ghi them vao

file.open(“PERSON.DAT’,ios::app | ios::out | ios::in | ios::binary);

//lay du lieu tu nguoi su dung de ghi ra

//file

do

{

cout<<”\nNhap du lieu cho nguoi:”;

pers.getData();//lay du lieu cua mot nguoi

file.write((char*)&pers,sizeof(pers));//ghi no ra diacout<<”Co nhap nua khong(c/k)?”;

cin>>ch;

}

Trang 13

}

Trang 14

B.K thu t b t l i vào/ra t p ỹ thuật bắt lỗi vào ra tệp ật bắt lỗi vào ra tệp ắng ỗi vào ra tệp ệp nhị phân

 Khi làm vi c v i t p không ph i luôn luôn suôn ện :(Nhóm 10) ớn ện :(Nhóm 10) ảng viên hướng dẫn:

s ,thẻ,thường xảy ra một số trục trặc, ví dụ như: ường ng x y ra m t s tr c tr c, ví d nh :ảng viên hướng dẫn: ột đối tượng vào tệp nhị phân ối tượng vào tệp nhị phân ụ ặc, ví dụ như: ụ ư

 M t p đ đ c nh ng t p không t n t iở một tệp dưới chế độ nhị phân, ta dùng cú ện :(Nhóm 10) ể mở một tệp dưới chế độ nhị phân, ta dùng cú ọc Thắng ư ện :(Nhóm 10) ồn tại ạm Ngọc Thắng

 Ghi t p nh ng không gian đĩa đã đ yện :(Nhóm 10) ư ầu vào như sau:

 T o t p nh ng đĩa h ng, đĩa c m ghi ho c đĩa ạm Ngọc Thắng ện :(Nhóm 10) ư ỏ tệp ấy địa chỉ (&) ặc, ví dụ như:

đã đ yầu vào như sau:

 Ho c tên t p đ t không h p lặc, ví dụ như: ện :(Nhóm 10) ặc, ví dụ như: ợng vào tệp nhị phân ện :(Nhóm 10)

 S d ng tham s mode ch a chính xác d n t i ử lấy địa chỉ (&) ụ ối tượng vào tệp nhị phân ư ẫn: ớn

chươn vị byte theo kích thước các bản ghi (cấu ng trình ch y b l i.ạm Ngọc Thắng ị Sen ỗi

 Đ c d li u nh ng con tr t p đã cu i t p.ọc Thắng ữ liệu vào một tệp nhị ện :(Nhóm 10) ư ỏ tệp ện :(Nhóm 10) ở một tệp dưới chế độ nhị phân, ta dùng cú ối tượng vào tệp nhị phân ện :(Nhóm 10)

Trang 15

Tóm l i ại ,khi làm vi c v i t p thện :(Nhóm 10) ớn ện :(Nhóm 10) ường ng g p nhi u l i ặc, ví dụ như: ều lỗi ỗi.khác nhau, n u không bi t cách phát hi n x lý thì ếu ếu ện :(Nhóm 10) ử lấy địa chỉ (&).

chươn vị byte theo kích thước các bản ghi (cấu ng trình s d n đ n r i lo n ho c cho k t qu ẽ dẫn đến rối loạn hoặc cho kết quả ẫn: ếu ối tượng vào tệp nhị phân ạm Ngọc Thắng ặc, ví dụ như: ếu ảng viên hướng dẫn: sai

Khái ni m c : ệp nhị phân ờ: ch a trong m t bit, có 2 tr ng thái:ức nhất: là con trỏ kiểu char trỏ đến ột đối tượng vào tệp nhị phân ạm Ngọc Thắng

B t (on) có giá tr 1ập Lớn ị Sen

T t (off) có giá tr 0ắng ị Sen

M i stream l u gi nh ng c tr ng thái cho ta ỗi ư ữ liệu vào một tệp nhị ữ liệu vào một tệp nhị ờng ạm Ngọc Thắng

bi t thao tác nh p, xu t có thành công hay không, ếu ập Lớn ấy địa chỉ (&)

và nguyên nhân gây l i Các c này, cũng nh c ỗi ờng ư ờng

đ nh d ng, th c ch t là các ph n t c a 1 vector ị Sen ạm Ngọc Thắng ực hiện :(Nhóm 10) ấy địa chỉ (&) ầu vào như sau: ử lấy địa chỉ (&) ủa con trỏ tệp

bit ( 1 s nguyên ) ối tượng vào tệp nhị phân

Trang 16

Chúng bao g m : ồm :

 goodbit: b t khi không có l i x y ra và các c khác ập Lớn ỗi ảng viên hướng dẫn: ờng

đ u t t.ều lỗi ắng

 eofbit: b t khi g p end-of-file.ập Lớn ặc, ví dụ như:

 failbit: b t khi vi c nh p tr nên không chính xác ập Lớn ện :(Nhóm 10) ập Lớn ở một tệp dưới chế độ nhị phân, ta dùng cú

nh ng stream v n n Ví d nh thay vì nh p s ư ẫn: ổn Ví dụ như thay vì nhập số ụ ư ập Lớn ối tượng vào tệp nhị phân

nguyên thì ngường i dùng l i nh p ký t ạm Ngọc Thắng ập Lớn ực hiện :(Nhóm 10)

badbit: b t khi b ng cách nào đó stream b h ng và ập Lớn ằng read và write ị Sen ỏ tệp

m t d li u.ấy địa chỉ (&) ữ liệu vào một tệp nhị ện :(Nhóm 10)

 clearbit: đ t l i các c tr ng tháiặc, ví dụ như: ạm Ngọc Thắng ờng ạm Ngọc Thắng

Trang 17

 Các c trên có th đờng ể mở một tệp dưới chế độ nhị phân, ta dùng cú ượng vào tệp nhị phânc truy xu t thông qua các ấy địa chỉ (&).

hàm tươn vị byte theo kích thước các bản ghi (cấu ng ng: good(), eof(), fail(), clear() và bad()ức nhất: là con trỏ kiểu char trỏ đến

 Phươn vị byte theo kích thước các bản ghi (cấu ng th c :ức nhất: là con trỏ kiểu char trỏ đến

int eof();

 N u con tr t p đã cu i t p mà l i th c hi n ếu ỏ tệp ện :(Nhóm 10) ở một tệp dưới chế độ nhị phân, ta dùng cú ối tượng vào tệp nhị phân ện :(Nhóm 10) ạm Ngọc Thắng ực hiện :(Nhóm 10) ện :(Nhóm 10)

l nh đ c d li u thì phện :(Nhóm 10) ọc Thắng ữ liệu vào một tệp nhị ện :(Nhóm 10) ươn vị byte theo kích thước các bản ghi (cấu ng th c eof() tr v giá tr ức nhất: là con trỏ kiểu char trỏ đến ảng viên hướng dẫn: ều lỗi ị Senkhác không,trái l i phạm Ngọc Thắng ươn vị byte theo kích thước các bản ghi (cấu ng th c có giá tr b ng ức nhất: là con trỏ kiểu char trỏ đến ị Sen ằng read và write

không

 Phươn vị byte theo kích thước các bản ghi (cấu ng th c :ức nhất: là con trỏ kiểu char trỏ đến

 int fail();

 Phươn vị byte theo kích thước các bản ghi (cấu ng th c fail() tr v giá tr khac không n u ức nhất: là con trỏ kiểu char trỏ đến ảng viên hướng dẫn: ều lỗi ị Sen ếu

l n nh p xu t cu i cùng có l i, trái l i phầu vào như sau: ập Lớn ấy địa chỉ (&) ối tượng vào tệp nhị phân ỗi ạm Ngọc Thắng ươn vị byte theo kích thước các bản ghi (cấu ng

th c có giá tr băng 0.ức nhất: là con trỏ kiểu char trỏ đến ị Sen

Trang 18

 Phươn vị byte theo kích thước các bản ghi (cấu ng th c :ức nhất: là con trỏ kiểu char trỏ đến

 Phươn vị byte theo kích thước các bản ghi (cấu ng th c good () tr v giá tr khác 0 n u m i ức nhất: là con trỏ kiểu char trỏ đến ảng viên hướng dẫn: ều lỗi ị Sen ếu ọc Thắng

vi c đ u t t đ p (không có l i nào x y ra) Khi ện :(Nhóm 10) ều lỗi ối tượng vào tệp nhị phân ẹp (không có lỗi nào xảy ra) Khi ỗi ảng viên hướng dẫn:

có m t lõi nào đó phột đối tượng vào tệp nhị phân ươn vị byte theo kích thước các bản ghi (cấu ng th c có giá tr b ng 0 ức nhất: là con trỏ kiểu char trỏ đến ị Sen ằng read và write

 Phươn vị byte theo kích thước các bản ghi (cấu ng th c :ức nhất: là con trỏ kiểu char trỏ đến

void clear();

Dùng đ t t t t c các bit l i.ể mở một tệp dưới chế độ nhị phân, ta dùng cú ắng ấy địa chỉ (&) ảng viên hướng dẫn: ỗi

Trang 20

Ví d 2: ụ:

Khi t o t p m i đ ghi c n ki m tra xem có t o đạm Ngọc Thắng ện :(Nhóm 10) ớn ể mở một tệp dưới chế độ nhị phân, ta dùng cú ầu vào như sau: ể mở một tệp dưới chế độ nhị phân, ta dùng cú ạm Ngọc Thắng ượng vào tệp nhị phânc

t p hay không Đ làm đi u đó ta có th dùng đo n ện :(Nhóm 10) ể mở một tệp dưới chế độ nhị phân, ta dùng cú ều lỗi ể mở một tệp dưới chế độ nhị phân, ta dùng cú ạm Ngọc Thắng

chươn vị byte theo kích thước các bản ghi (cấu ng trình sau:

Trang 21

C Con tr t p ỏ tệp ệp nhị phân

1 Khái ni m ệp nhị phân

chúng ta có th truy xu t dể mở một tệp dưới chế độ nhị phân, ta dùng cú ấy địa chỉ (&) ướni các tên Các bi n này ếu

đượng vào tệp nhị phân ưc l u tr t i nh ng ch c th trong b nh Đ i ữ liệu vào một tệp nhị ạm Ngọc Thắng ữ liệu vào một tệp nhị ỗi ụ ể mở một tệp dưới chế độ nhị phân, ta dùng cú ột đối tượng vào tệp nhị phân ớn ối tượng vào tệp nhị phân

v i chớn ươn vị byte theo kích thước các bản ghi (cấu ng trình c a chúng ta, b nh máy tính ch ủa con trỏ tệp ột đối tượng vào tệp nhị phân ớn ỉ (&)

là m t dãy g m các ô nh 1 byte, m i ô có m t đ a ột đối tượng vào tệp nhị phân ồn tại ớn ỗi ột đối tượng vào tệp nhị phân ị Sen

ch xác đ nh.ỉ (&) ị Sen

 V y con tr là bi n tr t i vùng nh ch a thông tin ập Lớn ỏ tệp ếu ỏ tệp ớn ớn ức nhất: là con trỏ kiểu char trỏ đến

đ xác đ nh các đ c tính c a t p, các thu c tính này ể mở một tệp dưới chế độ nhị phân, ta dùng cú ị Sen ặc, ví dụ như: ủa con trỏ tệp ện :(Nhóm 10) ột đối tượng vào tệp nhị phânbao g m: tên, tình tr ng và v trí hi n th i c a con ồn tại ạm Ngọc Thắng ị Sen ện :(Nhóm 10) ờng ủa con trỏ tệp

tr B n ch t, con tr t p xác đ nh m t t p trên đĩa ỏ tệp ảng viên hướng dẫn: ấy địa chỉ (&) ỏ tệp ện :(Nhóm 10) ị Sen ột đối tượng vào tệp nhị phân ện :(Nhóm 10)

tươn vị byte theo kích thước các bản ghi (cấu ng ng v i m t dòng d li u và liên k t 2 ức nhất: là con trỏ kiểu char trỏ đến ớn ột đối tượng vào tệp nhị phân ữ liệu vào một tệp nhị ện :(Nhóm 10) ếu

đ itối tượng vào tệp nhị phân ượng vào tệp nhị phânng này v i nhauớn

Ngày đăng: 14/04/2015, 09:00

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w