Đọc ghi trên tập tin binary
Đọc dữ liệu từ tập tin lưu vào biến:
tên_đối_tượng.read(địa chỉ biến, kt biến);
*Ghi dữ liệu vào tập tin:
tên_đối_tượng.write(địa chỉ biến, kt biến);
ØĐịa chỉ biến có dấu & trước tên biến (địa
chỉ của 1 ký tự)
ØKích thước biến: dùng hàm sizeof(biến)
18 trang |
Chia sẻ: thanhle95 | Lượt xem: 493 | Lượt tải: 1
Bạn đang xem nội dung tài liệu Bài giảng Kỹ thuật lập trình - Chương 6: Tập tin - Trần Minh Thái, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
TRẦN MINH THÁI
[W]www.minhthai.edu.vn
[M]minhthai@itc.edu.vn
**Cung cấp các kiến thức cơ bản về lập trình
lưu trữ trên tập tin (FILE)
*Cung cấp hàm thư viện phổ biến để thao
tác trên tập tin
**Tâp̣ tin văn ban̉ (text): tâp̣ tin duǹg đê g̉hi
cać kýtư ḷên điã theo cać doǹg è Dữ liệu
lưu được chuyển về dạng text
*Tâp̣ tin nhi p̣hân (binary): tâp̣ tin duǹg để
ghi cać dữ liệu dưới daṇg mã nhi p̣hân
**Bước 1: Mở tâp̣ tin để đọc/ ghi.
*Bước 2: Cać xử lýtrên tâp̣ tin.
*Bước 3: Đońg tâp̣ tin.
**ifstream: Dùng đọc file.
*ofstream: Dùng tạo file.
*fstream: Vừa có thể tạo file và đọc dữ
liệu trong file.
**Khai báo đối tượng file
fstream tên_đối_tượng;
*Mở file
tên_đối_tượng.open(“tên file”, chế độ
mở);
*Đóng file
tên_đối_tượng.close();
*
Chế độ mở Ý nghĩa
ios::out Ghi nội dung vào file
ios::in Đọc nội dung file
ios::app Thêm nội dung vào cuối file
nếu file đã có nội dung
ios::binary Tạo file nhị phân (nếu không
có thì mặc định mở file theo
chế độ text)
Kết hợp các chế độ mở file: dùng phép kết hợp or: |
Kết hợp ios::in | ios::out để mở file vừa đọc và ghi
**Đọc dữ liệu từng dòng lưu vào biến chuỗi:
tên_đối_tượng>>biến;
hoặc
tên_đối_tượng.getline(biến, độ dài tối đa);
*Ghi dữ liệu vào file:
tên_đối_tượng<<biến;
*
bool TaoFile(char *s)
{
fstream file;
file.open(s, ios::out);
if(file.fail())
return false;
file<<"Thu tu ngay 11 thang 04 nam 2012"<<endl;
file<<170<<endl;
file<<15.9;
file.close();
return true;
}
**Nội dung tập tin sau khi tạo:
Thu tu ngay 11 thang 04 nam 2012
170
15.9
*
bool DocFile(char *s)
{
char data[100];
fstream file;
file.open(s, ios::in);
if(file.fail())
return false;
while(file>>data)
{
cout<<data<<endl;
}
file.close();
return true;
}
Kết quả đọc file được
tạo từ hàm TaoFile:
Thu
tu
ngay
11
thang
04
nam
2012
170
15.9
*
bool DocFile2(char *s)
{
char data[100];
fstream file;
file.open(s, ios::in);
if(file.fail())
return false;
while(!file.eof())
{
file.getline(data, 100);
cout<<data<<endl;
}
file.close();
return true;
}
Kết quả đọc file được tạo từ hàm
TaoFile:
Thu tu ngay 11 thang 04 nam 2012
170
15.9
**Viết chương trình nhập vào một bài thơ
có 5 dòng và lưu bài thơ đó vào file:
“tho1.txt”
*Viết chương trình nhập vào một bài thơ
bất kỳ và lưu bài thơ đó vào file:
“tho2.txt”
*Viết chương trình tìm câu thơ nào dài
nhất trong tập tin “tho2.txt” vừa tạo
**Đọc dữ liệu từ tập tin lưu vào biến:
tên_đối_tượng.read(địa chỉ biến, kt biến);
*Ghi dữ liệu vào tập tin:
tên_đối_tượng.write(địa chỉ biến, kt biến);
ØĐịa chỉ biến có dấu & trước tên biến (địa
chỉ của 1 ký tự)
ØKích thước biến: dùng hàm sizeof(biến)
*
bool TaoFile(char *s)
{
char data[50]="Nguyen Van An";
int x=250;
fstream file;
file.open(s, ios::out|ios::binary);
if(file.fail())
return false;
file.write(data, sizeof(data));
file.write((char*)&x, sizeof(x));
file.close();
return true;
}
*
bool DocFile(char *s)
{ char data[50];
int x;
fstream file;
file.open(s, ios::in|ios::binary);
if(file.fail()) return false;
file.read(data, sizeof(data));
cout<<data<<endl;
file.read((char*)&x, sizeof(x));
cout<<x;
file.close();
return true;
}
*Viết chương trình nhập vào mảng số
nguyên, kích thước n và lưu mảng này vào
file “mang1c.dat” theo cấu trúc
-Dòng 1 lưu số lượng phần tử
-Dòng 2 lưu giá trị các phần tử trong mảng
*Cho dữ liệu là file “mang1c.dat” đã tạo
trước, hãy viết chương trình:
*Tìm phần tử có giá trị lớn nhất
*Đếm số lượng phần tử có giá trị là số
nguyên tố
*Thêm vào file phần tử có giá trị x vào sau
phần tử có giá trị lớn nhất