Thực hành ngôn ngữ lập trình C++ - Bài minh họa cách làm việc với Fstream
Viết chương trình fcompareso sánh nội dung 2 file text - mô phỏng dạng đơn giản của lệnh
COMP trong DOS. Nếu 2 file khác nhau thì in lại nội dung 2 file ra màn hình.
Ta truyền các tham sốcho chương trình (cụthểlà tên 2 file sẽ được so sánh) thông qua dòng lệnh
của DOS. Cú pháp là
fcompare ten_file_1 ten_file_2
TH Ngôn ngữ lập trình C++ Học kì I, năm học 2007-2008 Hoàng Thị Điệp, Bộ môn Khoa học Máy tính Bài minh họa cách làm việc với Yêu cầu: • trước khi đọc/ghi file phải kiểm tra xem có mở được file hay không • sau khi làm việc xong với file phải gọi đến hàm close() A. ĐỀ BÀI Viết chương trình fcompare so sánh nội dung 2 file text - mô phỏng dạng đơn giản của lệnh COMP trong DOS. Nếu 2 file khác nhau thì in lại nội dung 2 file ra màn hình. Ta truyền các tham số cho chương trình (cụ thể là tên 2 file sẽ được so sánh) thông qua dòng lệnh của DOS. Cú pháp là fcompare ten_file_1 ten_file_2 Dưới đây là ảnh chụp màn hình khi chạy chương trình mẫu: TH Ngôn ngữ lập trình C++ Học kì I, năm học 2007-2008 Hoàng Thị Điệp, Bộ môn Khoa học Máy tính B. MÃ NGUỒN // Tac gia: Hoang Thi Diep // Muc dich: chuong trinh so sanh noi dung 2 file text // mo phong dang don gian cua lenh COMP trong DOS // Cu phap: FCOMPARE FILE1 FILE2 // ---------------------------------------------------------------------------- #include #include using namespace std; bool isFinOk(char * fname);// kiem tra xem file input co mo duoc khong bool fCompare(char * fname1, char * fname2);// so sanh noi dung 2 file void print(char * fname); // in noi dung 1 file ra man hinh // ---------------------------------------------------------------------------- // Chuong trinh chinh // ---------------------------------------------------------------------------- int main(int argc, char * argv[]) { // kiem tra cac doi so if(argc != 3){ cerr << "So doi dong lenh dua vao khong hop le!" << endl; cout << "Cach su dung: FCOMPARE file1 file2"; return 1; } if(!isFinOk(argv[1])){ cerr << "file1 khong mo duoc!" << endl; return 1; } if(!isFinOk(argv[2])){ cerr << "file2 khong mo duoc!" << endl; return 1; } // neu doi so hop le, goi ham so sanh noi dung 2 file if(fCompare(argv[1], argv[2])) cout << argv[1] << " va " << argv[2] << " GIONG nhau."; else{ cout << argv[1] << " va " << argv[2] << " KHAC nhau."; cout << endl << "-------------------" << argv[1] << endl; print(argv[1]); cout << endl << "-------------------" << argv[2] << endl; print(argv[2]); cout << endl << "-------------------"; } return 0; } // ---------------------------------------------------------------------------- // Ham kiem tra xem file input co mo duoc khong // ---------------------------------------------------------------------------- bool isFinOk(char * fname) { ifstream fin(fname); if(!fin) return false; fin.close(); return true; } TH Ngôn ngữ lập trình C++ Học kì I, năm học 2007-2008 Hoàng Thị Điệp, Bộ môn Khoa học Máy tính // ---------------------------------------------------------------------------- // Ham so sanh noi dung 2 file // Doi so: ten 2 file mo duoc // Tra ve true neu noi dung 2 file giong het nhau, false neu nguoc lai // ---------------------------------------------------------------------------- bool fCompare(char * fname1, char * fname2) { ifstream f1(fname1); ifstream f2(fname2); bool identical = false; char ch1, ch2; while(1){ ch1 = f1.get(); ch2 = f2.get(); if(ch1 == EOF && ch2 == EOF){ identical = true; break; } if(ch1 != ch2) break; } f1.close(); f2.close(); return identical; } // ---------------------------------------------------------------------------- // Ham in noi dung 1 file ra man hinh // ---------------------------------------------------------------------------- void print(char * fname) { ifstream fin(fname); char ch; while((ch = fin.get()) != EOF){ cout << ch; } fin.close(); }
File đính kèm:
- Thực hành ngôn ngữ lập trình C++ - Bài minh họa cách làm việc với Fstream.pdf