C与C++的文件操作

C语言的文件操作

通过定义两个文件类型的指针, 利用C库的文件操作函数,(fopen,,)对文件进行打开、关闭、读写操作
然后利用getc一次从输入流stdin读取一个字符,putc再把这个字符写到输出流stdout
最后进行end of file检测


#include<stdio.h>
#include<stdlib.h>

int main (int argc, char* argv[])
{
    FILE *in,  *out;
    int ch;
    if(argc != 3)
    {
        fprintf(stderr, "请输入格式:copyfile sourcefile dircfile \n"); 
        exit(EXIT_FAILURE);
    }

    if( (in = fopen(argv[1],"rb")) == NULL) //可读的二进制文件
    {
        fprintf(stderr, "打开文件失败 %s\n", argv[1] );
        exit(EXIT_FAILURE);
    }

    if((out =fopen(argv[2],"wb")) == NULL)
    {
        fprintf(stderr, "打开文件失败 %s\n", argv[2] );
        fclose(in);
        exit(EXIT_FAILURE);
    }


    while(ch = getc(in) != EOF)
    {
        if(putc(ch,out) == EOF)
        {
            break;
        }
    }

    if(ferror(in))
        printf("读取文件%s 失败\n",argv[1] );

    if(ferror(out))
        printf("读取文件%s 失败\n",argv[2] );

    printf("successful copy file");

    return 0;

}

// cmd终端下运行  file.exe source.exe dir.exe

C++文件操作

C++通过 ifstream ofstream 类,定义对象,调用相应的方法就可以实现同样的功能。


#include <fstream>
#include <iostream>
using namespace std;
int main(int argc ,char*  argv[])
{

    ifstream in;  //文件输入流对象 
    ofstream out; //文件输出流对象 
    //或者使用构造函数 ofstream out("test.txt");

    //写操作
    out.open("test.txt");
    if(!out)
    {
        cout<<"open file failed"<<endl;
        return 0;
    }

   for(int i=0;i<10;i++)
   {
        out<<i; //数据流出到out对象的文件
   }
   out<<endl;
   out.close();

   //读操作
    in.open("test.txt");
    if(!in)
    {
        cout<<"open file failed"<<endl;
        return 0;
    }

    char ch;
    while(in >> ch)  //把文件流入ch
    {
        cout << ch;  //再流出到终端
    }
    in.close();
    return 0;

}

ofstream out(“test.txt”, ios::app);
ios::in 可读
ios::out 可写
ios::binary 以二进制形式打开
ios::app 写入的数据将追加到文件末尾
ios::trunk 删除文件原来已存在的内容
ios::nocreat 如果不存在将无法打开
ios::noreplece 如果不存在 试图用open打开将返回一个错误。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一銤阳光

希望分享的内容对你有帮助

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值