通过C++文件复制小程序来理解read、write函数

在初期,对于输入文件和输出文件的理解,作为调取信息的文件来说,我们需要把读取方式设置为ios::in,即作为我们程序的输入;同样,对于存放信息的文件来说,我们需要把读取方式设置为ios::out,即作为程序的输出。

在读取文件信息的时候,由于read函数遇到文件结束标识符EOF的时候,他会提前结束读取,加上我的输入文件中根本不存在100个字节的字符,所以不会进入weile循环,这样就必须要在while循环之后加入一个提取上次读取字符的操作,再讲上次读取到的字符write到目标文件中。否则,就会出现目标文件中没有复制到任何信息的情况。
/*****************************************************
copyright (C), 2016-2017, NJIT,     Ltd. 
File name:
Author:Jijiahao   Version:0.1    Date: 
Description:
Funcion List: 
*****************************************************/

#include <iostream>
#include <fstream>
using namespace std;

int main(int argc,char *argv)
{

    fstream outfile("1.dat",ios::in|ios::binary);
    if(!outfile)
    {
        cerr<<"open 1.dat  error"<<endl;
        exit(1);
    }

    fstream infile("2.dat",ios::out|ios::binary);
    if(!infile)
    {
        cerr<<"open 2.dat  error"<<endl;
        exit(1);
    }


    outfile.seekg(ios::beg);    //文件定位
    infile.seekp(ios::beg);

    char buf[100];
    memset(buf,0,sizeof(buf));
    while( outfile.read(buf,sizeof(buf)) != 0)
    {
        infile.write(buf,sizeof(buf));
        memset(buf,0,sizeof(buf));
    }
    infile.write(buf,outfile.gcount());

    outfile.close();
    infile.close();

    cout<<"1.dat -> 2.dat 赋值成功!"<<endl;


    return 0;
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值