Chương 7 Các dòng tập tin (Stream) Nhập xuất nhị phân

3 351 0
Chương 7 Các dòng tập tin (Stream) Nhập xuất nhị  phân

Đang tải... (xem toàn văn)

Thông tin tài liệu

Nhập xuất nhị phân 15.1. Chọn kiểu nhập xuất nhị phân Kiểu nhập xuất mặc định là văn bản. Để chọn kiểu nhập xuất nhị phân, thì trong tham số mode (của hàm tạo dạng 2 và phương thức open) cần chứa giá trị: ios::binary Ví dụ muốn mở tệp “DSTS.DL” để đọc-ghi theo kiểu nhị phân và gắn tệp với dòng nhập- xuất fs , ta dùng câu lệnh sau: fstream fs(“DSTS.DL” , ios::in | ios::out | ios::binary) ; 15.2. Đọc, ghi ký tự + Để ghi một ký tự lên tệp có thể dùng phương thức: ostream & put(char) ; + Để đọc một ký tự từ tệp có thể dùng phương thức: istream & get(char &) ; Cần chú ý rằng: Cách đọc ghi ký tự theo kiểu văn bản khác với cách đọc ghi ký tự theo kiểu nhị phân (xem chương 10, cuốn Kỹ thuật lập trình C của tác giả) Ví dụ để sao tệp có thể dùng thuật toán đơn giản sau: + Đọc một ký tự từ tệp nguồn + Nếu đọc thành công ( phương thức eof() = 0) thì ghi lên tệp đích và lại tiếp tục đọc ký tự tiếp theo. + Nếu đọc không thành công ( phương thức eof() != 0) thì kết thúc. Chú ý là phải dùng kiểu nhập xuất nhị phân thì thuật toán mới cho kết quả chính xác. Chương trình sao tệp dưới đây viết theo thuật toán trên. //CT7_15.CPP // Sao tep #include <iostream.h> #include <fstream.h> #include <conio.h> #include <stdlib.h> void main() { clrscr(); char tep_nguon[40], tep_dich[40] ; char ch; fstream fnguon, fdich; cout << "\nTen tep nguon: " ; cin >> tep_nguon; cout << "\nTen tep dich: " ; cin >> tep_dich; fnguon.open(tep_nguon,ios::in | ios::binary); fdich.open(tep_dich,ios::out | ios::binary); if (fnguon.bad() || fdich.bad() ) 428 { cout << "\n Loi mo tep nguon hoac dich " ; getch(); exit(1); } while(fnguon.get(ch),!fnguon.eof()) fdich.put(ch) ; fnguon.close(); fdich.close(); cout << "\nHoan thanh" ; getch(); } 15.3. Đọc, ghi một dẫy ký tự theo kiểu nhị phân + Phương thức: ostream & write(char *buf, int n) ; sẽ xuất n ký tự (byte) chứa trong buf ra dòng xuất. + Phương thức: istream & read(char *buf, int n) ; sẽ nhập n ký tự (byte) từ dòng nhập và chứa vào buf. + Phương thức int gcount cho biết số ký tự thực sự đọc được trong phương thức read. Chú ý: Các phương thức write, read chỉ làm việc một cách chính xác trong kiểu nhập-xuất nhị phân. Dưới đây là chương trình sao tệp sử dụng các phương thức write, read và gcount. //CT7_16.CPP // Sao tep dung write, read va gcount #include <iostream.h> #include <fstream.h> #include <conio.h> #include <stdlib.h> void main() { clrscr(); char tep_nguon[40], tep_dich[40] ; char buf[5000]; int n; fstream fnguon, fdich; cout << "\nTen tep nguon: " ; cin >> tep_nguon; cout << "\nTen tep dich: " ; cin >> tep_dich; fnguon.open(tep_nguon,ios::in | ios::binary); fdich.open(tep_dich,ios::out | ios::binary); if (fnguon.bad() || fdich.bad() ) { cout << "\n Loi mo tep nguon hoac dich " ; getch(); exit(1); } while(fnguon.read(buf,5000),(n=fnguon.gcount())) fdich.write(buf,n) ; fnguon.close(); fdich.close(); cout << "\nHoan thanh" ; getch(); } 430 . Nhập xuất nhị phân 15.1. Chọn kiểu nhập xuất nhị phân Kiểu nhập xuất mặc định là văn bản. Để chọn kiểu nhập xuất nhị phân, thì trong tham. làm việc một cách chính xác trong kiểu nhập- xuất nhị phân. Dưới đây là chương trình sao tệp sử dụng các phương thức write, read và gcount. //CT7_16.CPP //

Ngày đăng: 24/10/2013, 15:20

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan