|
想请大家帮我看一下 为什么运行结果不正确 谢谢
#include <iostream>
#include <fstream>
using namespace std;
void copy_file(const char* origin, const char* target); //复制文件:origin->target
int main()
{
const char* file1 = "123.txt"; //原文件
const char* file2 = "456.txt"; //目标文件
copy_file(file1, file2);
return 0;
}
void copy_file(const char* origin, const char* target)
{
//读文件内容到缓冲区
ifstream file_read;
file_read.open(origin, ios::binary);
file_read.seekg(0,ios::end);
int fileorigin_size = file_read.tellg();
cout << "原文件大小为:" << fileorigin_size << endl;
file_read.seekg(0, ios::beg);
char* buf = new char[fileorigin_size];
file_read.read(buf, sizeof(buf));
file_read.close();
//缓冲区内容写入新文件
ofstream file_write;
file_write.open(target, ios::binary);
file_write.write(buf, sizeof(buf));
file_write.seekp(0, ios::end);
int filetarget_size = file_write.tellp();
cout << "目标文件大小为:" << filetarget_size << endl;
file_write.close();
delete []buf;
}
运行后无法完全将“123.txt”中内容复制到新文件,仅复制了4个字符。
sizeof(buf) 得到的只是这个指针地址的大小,已给你改好了。
- #include <iostream>
- #include <fstream>
- using namespace std;
- void copy_file(const char* origin, const char* target); //复制文件:origin->target
- int main()
- {
- const char* file1 = "123.txt"; //原文件
- const char* file2 = "456.txt"; //目标文件
- copy_file(file1, file2);
- return 0;
- }
- void copy_file(const char* origin, const char* target)
- {
- //读文件内容到缓冲区
- ifstream file_read;
- file_read.open(origin, ios::binary);
- file_read.seekg(0,ios::end);
- int fileorigin_size = file_read.tellg();
- cout << "原文件大小为:" << fileorigin_size << endl;
- file_read.seekg(0, ios::beg);
- char* buf = new char[fileorigin_size];
- file_read.read(buf, fileorigin_size);
- file_read.close();
- //缓冲区内容写入新文件
- ofstream file_write;
- file_write.open(target, ios::binary);
- file_write.write(buf, fileorigin_size);
- file_write.seekp(0, ios::end);
- int filetarget_size = file_write.tellp();
- cout << "目标文件大小为:" << filetarget_size << endl;
- file_write.close();
- delete []buf;
- }
复制代码
|
上一篇: VS2019 编译QT程序如何实现静态编译下一篇: 大佬,帮帮忙,救救孩子吧
|