Em có làm 1 chương trình copy file như sau:
#include <iostream>
#include <fstream>
#include <stdlib.h>
using namespace std;
//! ham copy noi dung tu file nay sang file khac
void copyStreamContent(ifstream& src, ofstream& des){
int length = 100;
char* buffer = new char[length];
while (!src.eof()){
src.read(buffer, length);
cout << "Read " << src.gcount() << " byte(s)!\n";
des.write(buffer, length);
}
}
int main(){
ifstream fIn("copy_file_binary.cpp", ios::in);
if (!fIn.is_open()){
cout << "Error: Not Found!\n";
exit(EXIT_FAILURE);
}
ofstream fOut("destination", ios::out);
copyStreamContent(fIn, fOut);
return 0;
}
Tên tệp này là: copy_file_binary.cpp
Trong đó em có sử dụng 2 hàm read() và write() của thư viện fstream để đọc các block của file. Chương trình này sẽ hoàn thành đúng nhiệm vụ nếu file source là 1 file BINARY đúng nghĩa! Nhưng nếu thay file source bằng 1 file TEXT, kết quả là: file destination có thêm 1 số kí tự bị thừa ở phía sau. Ai giải thích giùm em vấn đề này với ạ? Có phải 2 hàm read(), write() của fstream chỉ dùng được đối với file binary hay là do cái gì gây ra như thế?
Em xin cảm ơn trước 

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?