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

pdf3 trang | Chuyên mục: C/C++ | Chia sẻ: dkS00TYs | Lượt xem: 1890 | Lượt tải: 1download
Tóm tắt nội dung 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, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
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:

  • pdfThự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