Bài giảng Kỹ thuật lập trình nâng cao - Chương 6: Tập tin 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. Mời các bạn cùng tham khảo nội dung chi tiết.
Trang 1TR ẦN MINH THÁI
[W]www.minhthai.edu.vn [M]minhthai@itc.edu.vn
Trang 2*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
Trang 3*Tập tin văn bản (text): tập tin dùng đểghi các kýtựlên đĩa theo các dòng è Dữ liệu lưu được chuyển về dạng text
*Tập tin nhịphân (binary): tập tin dùng để ghi các dữ liệu dưới dạng mã nhịphân
Trang 4*Bước 1: Mở tập tin để đọc/ ghi
*Bước 2: Các xử lýtrên tập tin
*Bước 3: Đóng tập tin
Trang 5*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
Trang 6*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();
Trang 7ios::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
Trang 8*Đọ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;
Trang 9bool 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;
}
Trang 10*Nội dung tập tin sau khi tạo:
Thu tu ngay 11 thang 04 nam 2012 170
15.9
Trang 11bool 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
Trang 12bool 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
Trang 13*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
Trang 14*Đọ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)
Trang 15bool 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;
}
Trang 16bool 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;
}
Trang 17Viế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
Trang 18Cho 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