#include
#include
#include
using namespace std;
#define MAX_LEN 4096
#define MAX_FN 300
int main() {
char CpBuf[MAX_LEN], SrcFN[MAX_FN] = “ ”, ObjFN[MAX_FN] = “ ”;
int returnVal = 0;
cout << "请输入要复制的文件名:n> ";
if (!cin.getline(SrcFN, MAX_FN)) {
cout << “错误!输入的文件名长度超限” << endl;
cin.clear();
while (cin.get() != EOF) {}
}
cout << "请输入复制后的文件名:n> ";
if (!cin.getline(ObjFN, MAX_FN)) {
cout << “错误!输入的文件名长度超限” << endl;
cin.clear();
while (cin.get() != EOF) {}
}
fstream SrcFile(SrcFN, ios::in | ios::binary);
if (!SrcFile) {
cout << “源文件打开失败!” << endl;
system(“pause”);
returnVal = 2;
return returnVal;
}
fstream ObjFile(ObjFN, ios::out | ios::binary);
if (!ObjFile) {
SrcFile.close();
cout << “目标文件创建失败!” << endl;
system(“pause”);
returnVal = 3;
return returnVal;
}
while (SrcFile.read(CpBuf, MAX_LEN)) {
if (SrcFile.bad()) {
SrcFile.close();
ObjFile.close();
returnVal = 4;
cerr << “文件读取发生严重意外,请检查是否存在硬件损坏,磁盘读取是否正常。nnn”;
system(“pause”);
return returnVal;
}
if (SrcFile.fail()) {
SrcFile.close();
ObjFile.close();
returnVal = 5;
cerr << “文件读取发生错误,请检查文件操作方法是否正确。nnn”;
system(“pause”);
return returnVal;
}
ObjFile.write(CpBuf, SrcFile.gcount());
if (ObjFile.bad()) {
SrcFile.close();
ObjFile.close();
returnVal = 6;
cerr << “文件写入发生严重意外,请检查是否存在硬件损坏,磁盘是否能正常写入。nnn”;
system(“pause”);
return returnVal;
}
if (ObjFile.fail()) {
SrcFile.close();
ObjFile.close();
returnVal = 7;
cerr << “文件写入发生错误,请检查文件操作方法是否正确。nnn”;
system(“pause”);
return returnVal;
}
}
ObjFile.write(CpBuf, SrcFile.gcount());
if (ObjFile.bad()) {
SrcFile.close();
ObjFile.close();
returnVal = 6;
cerr << “文件写入发生严重意外,请检查是否存在硬件损坏,磁盘是否能正常写入。nnn”;
system(“pause”);
return returnVal;
}
if (ObjFile.fail()) {
SrcFile.close();
ObjFile.close();
returnVal = 7;
cerr << “文件写入发生错误,请检查文件操作方法是否正确。nnn”;
system(“pause”);
return returnVal;
}
SrcFile.close();
ObjFile.close();
cout << “文件复制完成!” << endl;
system(“pause”);
return returnVal;
}



