编写程序,实现文件拷贝功能。程序运行时,通过控制台接受用户输入两个参数,即源文件和目标文件,命令格式如下: cp.exe source.file destination.file 提示: 1)以二进制形式操作文件,对于源文件使用ios_base::_Nocreate方式,表示不新建文件(文件不存在则出错),对于目标文件使用ios_base::_Noreplace方式,表示不覆盖文件(文件已存在则出错)。 2)循环读取文件时,最后一次读取读到文件尾,通常不会恰好填满缓冲区,可以通过ifstream::gcount()获取刚才读取的字节数。 3)int main(int argc, char **argv)可以让程序获取用户输入的参数。 运行效果如下:D :\ tmp>cp . exe exl . obj out . dat File copied : exl . obj D:\ tmp >
时间: 2024-02-13 16:03:03 浏览: 71
C 语言实现文件拷贝程序代码(read,write)
好的,以下是 C++ 代码实现文件拷贝功能:
```cpp
#include <iostream>
#include <fstream>
using namespace std;
int main(int argc, char **argv) {
if (argc != 3) { // 参数个数不为3
cout << "Usage: cp.exe source.file destination.file" << endl;
return 1;
}
ifstream in(argv[1], ios_base::binary | ios_base::in | ios_base::_Nocreate);
if (!in.is_open()) { // 打开源文件失败
cout << "Error: cannot open source file " << argv[1] << endl;
return 1;
}
ofstream out(argv[2], ios_base::binary | ios_base::out | ios_base::_Noreplace);
if (!out.is_open()) { // 打开目标文件失败
cout << "Error: cannot open destination file " << argv[2] << endl;
return 1;
}
char buffer[4096];
while (!in.eof()) {
in.read(buffer, sizeof(buffer));
out.write(buffer, in.gcount());
}
in.close();
out.close();
cout << "File copied: " << argv[1] << endl;
return 0;
}
```
这份代码会检查参数个数是否正确,然后以二进制形式打开源文件和目标文件(使用了给出的方式),如果打开失败,则输出错误信息并退出程序;如果打开成功,则循环读取源文件并写入目标文件,最后输出成功信息并退出程序。
阅读全文