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 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); ...

pdf15 trang | Chia sẻ: honghanh66 | Lượt xem: 680 | Lượt tải: 0download
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:

  • pdfchuong_6_file_3941.pdf