在程序清单13-7CopyFile.cpp中,使用文本I/O来拷贝文件。修改该程序,使用二进制I/O来进行文件拷贝。
时间: 2024-03-20 18:40:18 浏览: 62
好的,我会帮您解答这个问题。
下面是修改后的程序清单13-7CopyFile.cpp,使用二进制I/O来进行文件拷贝:
```cpp
#include <iostream>
#include <fstream>
#include <cstdlib> // for exit()
int main(int argc, char* argv[])
{
using namespace std;
if (argc != 3)
{
cerr << "Usage: " << argv[0] << " source-file destination-file\n";
exit(EXIT_FAILURE);
}
ifstream fin(argv[1], ios::binary); // 打开源文件,使用二进制I/O
if (!fin.is_open())
{
cerr << "Can't open " << argv[1] << " for input.\n";
exit(EXIT_FAILURE);
}
ofstream fout(argv[2], ios::binary); // 打开目标文件,使用二进制I/O
if (!fout.is_open())
{
cerr << "Can't open " << argv[2] << " for output.\n";
exit(EXIT_FAILURE);
}
char ch;
while (fin.get(ch)) // 一次读取一个字符
{
fout.put(ch); // 一次写入一个字符
}
fin.close();
fout.close();
return 0;
}
```
相对于原来的程序,修改的地方包括:
1. 打开文件时使用 `ios::binary` 标志,即使用二进制I/O。
2. 读取和写入文件时使用 `get()` 和 `put()` 函数,分别读取和写入一个字符。
这样就实现了使用二进制I/O进行文件拷贝的功能。
阅读全文