/*C++实现文件复制*/
# include <iostream>
# include <fstream>
using namespace std;
int main(int argc , char* argv[])
{
//打开文件
if (argc < 3){
perror ("参数少于3个,不符合要求\n");
}
fstream ifs (argv[1],ios::in);
fstream ofs (argv[2],ios::out);
//将文件指针定位到末尾,求取文件的长度,赋值给total
ifs.seekg(0,ios::end);
int total = ifs.tellg();
//重新定位文件指针到开始位置
ifs.seekg(0,ios::beg);
char buf[128];
//readCount为每次读取到的数据个数,count为读到的数据总数
int readCount = 0;
int count = 0;
//边读边写,直到读取的总数等于文件的长度结束
while(count < total ){
ifs.read(buf,sizeof(buf));
readCount = ifs.gcount();
count += readCount;
ofs.write(buf,readCount);
}
//关闭文件
ifs.close();
ofs.close();
}
// 执行时用 ./a.out file1 file2
# include <iostream>
# include <fstream>
using namespace std;
int main(int argc , char* argv[])
{
//打开文件
if (argc < 3){
perror ("参数少于3个,不符合要求\n");
}
fstream ifs (argv[1],ios::in);
fstream ofs (argv[2],ios::out);
//将文件指针定位到末尾,求取文件的长度,赋值给total
ifs.seekg(0,ios::end);
int total = ifs.tellg();
//重新定位文件指针到开始位置
ifs.seekg(0,ios::beg);
char buf[128];
//readCount为每次读取到的数据个数,count为读到的数据总数
int readCount = 0;
int count = 0;
//边读边写,直到读取的总数等于文件的长度结束
while(count < total ){
ifs.read(buf,sizeof(buf));
readCount = ifs.gcount();
count += readCount;
ofs.write(buf,readCount);
}
//关闭文件
ifs.close();
ofs.close();
}
// 执行时用 ./a.out file1 file2