Tài liệu Bài giảng Lập trình C - Chương 6: Lưu trữ dữ liệu trên tập tin: CHƯƠNG 6 
Lưu trữ dữ liệu trên tập tin 
1. Giới Thiệu 
 Tập tin văn bản: tập tin dùng để ghi các ký tự lên đĩa theo các dòng. 
 Tập tin nhị phân: tập tin dùng để ghi các cấu trúc dạng nhị phân 
(được mã hoá). 
2 
2. Thao tác với tập tin 
 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. 
3 
3. Lớp fstream - 
• fstream dataFile : khai báo tên đối tượng kiểu fstream 
• dataFile.open(“tên file", mode); 
• Tên file : chuỗi chứ tên file 
• Mode : Có 5 chế độ cơ bản sau: 
• ios::out :chế độ mở file để xuất ra (đọc file) 
• ios::in : chế độ mở file để Ghi 
• ios::app : Chế độ gắn thêm vào file (nếu file chưa được tạo thì nó sẽ 
tạo ra 1 file mới) 
• ios::binary : Chế độ nhị phân 
• ios::trunc : Nếu file đã được tạo thì nội dung của nó sẽ bị xóa đi. 
• Đóng file : dataFile.close() 
4 
4. Các thao tác trên file 
• Mở file : 
• dataFile.open(“info.txt", ios::out); 
...
                
              
                                            
                                
            
 
            
                 15 trang
15 trang | 
Chia sẻ: honghanh66 | Lượt xem: 916 | Lượt tải: 0 
              
            Bạn đang xem nội dung tài liệu Bài giảng Lập trình C - Chương 6: Lưu trữ dữ liệu trên tập tin, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
CHƯƠNG 6 
Lưu trữ dữ liệu trên tập tin 
1. Giới Thiệu 
 Tập tin văn bản: tập tin dùng để ghi các ký tự lên đĩa theo các dòng. 
 Tập tin nhị phân: tập tin dùng để ghi các cấu trúc dạng nhị phân 
(được mã hoá). 
2 
2. Thao tác với tập tin 
 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. 
3 
3. Lớp fstream - 
• fstream dataFile : khai báo tên đối tượng kiểu fstream 
• dataFile.open(“tên file", mode); 
• Tên file : chuỗi chứ tên file 
• Mode : Có 5 chế độ cơ bản sau: 
• ios::out :chế độ mở file để xuất ra (đọc file) 
• ios::in : chế độ mở file để Ghi 
• ios::app : Chế độ gắn thêm vào file (nếu file chưa được tạo thì nó sẽ 
tạo ra 1 file mới) 
• ios::binary : Chế độ nhị phân 
• ios::trunc : Nếu file đã được tạo thì nội dung của nó sẽ bị xóa đi. 
• Đóng file : dataFile.close() 
4 
4. Các thao tác trên file 
• Mở file : 
• dataFile.open(“info.txt", ios::out); 
• Ghi file : 
• dataFile.open(“info.txt", ios::in); 
• Mở ghi và chèn vào cuối file : 
• dataFile.open(“info.txt", ios::app); 
• Mở để đọc và ghi : 
• dataFile.open(“info.txt", ios::in | ios::out); 
• Nếu file chưa tồn tại thì sẽ tự động tạo file mới 
5 
4.1 mở file để ghi 
#include 
#include 
using namespace std; 
void main() 
{ 
 fstream dataFile; 
 cout << "Opening file...\n"; 
 dataFile.open("demofile.txt", ios::out); // Mở file để ghi vào 
 cout << "Now writing data to the file.\n"; 
 dataFile << "Jones\n"; // Ghi dòng thứ 1 
 dataFile << "Smith\n"; // Ghi dòng thứ 2 
 dataFile << "Willis\n"; // Ghi dòng thứ 3 
 dataFile << "Davis\n"; // Ghi dòng thứ 4 
 dataFile.close(); // Đóng file 
 cout << "Done.\n"; 
} 
6 
4.2 Ghi thêm vào file 
//ghi thêm vào file , nếu file đã tồn tại thì tiến hành append tiếp tục 
vào 
void writeAppendFile() 
{ 
 fstream dataFile; 
 cout << "Opening file...\n"; 
// Mở file ở chế độ gắn vào. 
 dataFile.open(“info.txt", ios::out | ios::app); 
 dataFile << “Eliza beth\n"; // Ghi thêm 
 dataFile << “Messi\n"; //Ghi thêm 
 dataFile.close(); // Đóng file 
} 
7 
4.3 Xuất file có định dạng 
#include // thư viện cho việc sử dụng hàm setprecision 
void writeFormatFile() 
{ 
 fstream dataFile; 
 double num = 17.816392; 
 dataFile.open("numfile.txt", ios::out); 
 dataFile << fixed; // Định dạng fixed-point 
 dataFile << num << endl; //Xuất ra num = 17.816392 
 dataFile << setprecision(4); // Định dạng 4 phần thập phân sau dấu . 
 dataFile << num << endl; //Xuất ra num = 17.8164 
 dataFile << setprecision(2); // 2 phần 
 dataFile << num << endl; // xuất ra num = 17.82 
 dataFile.close(); // Đóng file 
} 
 8 
4.4 Đọc nội dung file 
void main() 
{ 
const int SIZE = 81; // Size của mãng input 
char input[SIZE]; // Mãng lưu input 
fstream nameFile; 
nameFile.open("murphy.txt", ios::in); //Mở file ở chế độ đọc 
if (!nameFile) 
 { cout << "ERROR: Cannot open file.\n"; 
 return ; 
 } 
while (nameFile >> input) //Đọc nội dung file. 
 cout << input; 
 nameFile.close(); 
} 
9 
4.4 Đọc nội dung file (tt) 
 Khoảng trắng (Whitespace) là 1 kí tự mà nó là 1 phần của dữ 
liệu, vấn đề sẽ nảy sinh khi ta đoc vào bằng toán tử >>. Bởi vì 
toán tử >> nó xem khoảng trắng như 1 kí tự kết thúc 
(delimiter), vì thế nó sẽ không đọc chúng vào 
 Để khắc phục, ta sử dụng hàm getline. Hàm getline sẽ đọc 
toàn bộ nội dung của 1 dòng trong file và giữ nguyên định 
dạng 
10 
4.4 Đọc nội dung file 
void main() 
{ 
const int SIZE = 81; // Size của mãng input 
char input[SIZE]; // Mãng lưu input 
fstream nameFile; 
nameFile.open("murphy.txt", ios::in); //Mở file ở chế độ đọc 
nameFile.getline(input, SIZE); //Dùng kí tự mặc định \n như kí tự kết thúc. 
 while (!nameFile.eof()) //Nếu chưa kết thúc file thì tiếp tục đọc 
 { 
 cout << input << endl; 
 nameFile.getline(input, SIZE); 
 } 
nameFile.close(); 
} 
11 
4.5 Truyền file vào hàm 
 Chúng ta khi làm việc với những chương trình thực sự thì đôi 
khi chúng ta cần phải truyền 1 tên file vào hàm nào đó để tiện 
cho việc quản lý, nhưng khi truyền phải lưu ý là luôn luôn 
truyền bằng tham chiếu 
 Ví dụ : bool OpenFile(fstream &file, char *name) 
12 
Ví dụ: kiểm tra file có tồn tại ? 
 //Hàm mở file, kiểm tra file có tồn tại chưa ? 
bool OpenFile(fstream &file, char *name) 
{ 
 file.open(name, ios::in); 
 if(file.fail()) 
 return false; 
 else 
 return true; 
} 
13 
Ví dụ: hiển thị nội dung toàn bộ file 
//truyền file vào hàm, hiển thị nội dung file 
void ShowContents(fstream &file) 
{ 
 char *line = new char[100];//kích thước 1 dòng tối đa là 81 
 while(file.getline(line,100)) 
 { 
 cout << line << endl; 
 } 
} 
14 
Hàm main() 
void main() 
{ 
 fstream dataFile; 
 if(!OpenFile(dataFile, "demofile.txt")) 
 { 
 cout << "Error !" << endl; 
 return ; 
 } 
 cout << "Successfully.\n"; 
 ShowContents(dataFile); 
 dataFile.close(); 
} 
15 
            Các file đính kèm theo tài liệu này:
 chuong_6_file_3941.pdf chuong_6_file_3941.pdf