这个问题要求我们编写一个函数,称为fun函数,它可以将指定源文件中的内容复制到指定目标文件中,在复制过程中,如果复制成功,则fun函数返回值为1,如果复制失败,则返回值为0。在复制过程中,将复制的内容输出到终端。函数中源文件的名称放在变量sfname中,目标文件的名称放在变量tfname中。请不要添加行或删除行,或修改程序的结构。
时间: 2024-03-11 12:47:33 浏览: 55
这是一个典型的文件复制问题,可以使用标准库中的文件操作函数来解决。以下是对应的代码实现:
```c++
#include <iostream>
#include <fstream>
int fun(const char* sfname, const char* tfname) {
std::ifstream source(sfname, std::ios::binary);
std::ofstream target(tfname, std::ios::binary);
if (!source.is_open() || !target.is_open()) {
std::cout << "Fail to open file!" << std::endl;
return 0;
}
target << source.rdbuf();
source.close();
target.close();
std::cout << "Copy file successfully!" << std::endl;
return 1;
}
```
在这个函数中,我们首先打开源文件和目标文件,同时检查是否打开成功。如果打开失败,则输出提示信息并且返回0表示复制失败。
如果打开成功,则使用`source.rdbuf()`来获取源文件的数据流,然后使用`target << source.rdbuf()`将数据流写入目标文件中。最后,关闭源文件和目标文件,并输出提示信息,返回1表示复制成功。
需要注意的是,此函数只适用于二进制文件的复制。如果需要复制文本文件,则需要在打开文件时使用`std::ios::in`和`std::ios::out`标志,并且使用`std::getline`函数来逐行读取和写入文件。
阅读全文