我是靠谱客的博主 外向小土豆,最近开发中收集的这篇文章主要介绍C与C++简单文件操作比较,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

为了更加深刻地理解C与C++对文件操作,本文以一个简单的文件读写操作为实例(分别含C和C++源程序),来简单分析一下C与C++在文件操作上的区别。
首先,从头文件的角度出发:对于C++,其最大的特点是引入了“类”的概念,所以对文件的操作首先就要含有文件流的类的函数的头文件,即#include<fstream>;而C语言中无此概念,因而不需要额外的头文件。
其次,从文件的写操作上分析:C++的操作是对对象的操作,因此首先应该创建写文件流的对象,即ofstream outfile,(其中ofstream是头文件fstream中的一个类),对对象outfile的初始化主要包括:写操作文件的名称(如,myfile.dat)和文件操作的方式(ios::out表示写),对对象的操作都是通过函数成员(close())实现的;在C中是通过文件指针(FILE *fpin)和相应的库函数(fopen、close)来实现的,其中fopen也包含写操作文件的名称和文件操作方式(“r”)这两大参数。其中,要注意两种语言都要对操作后的对象(或指针)进行判断,若为空,则退出,以此来保证程序的有效执行。(若没有此判断,则后续关于文件数据的操作就是一个大的BUG)。对文件写操作结束后来及时的关闭文件,以释放空间。
再次,从文件的读操作上分析:与写操作类似,C++都是通过创建对象,对象调用成员函数实现的;而C则是通过文件指针,对库函数的调用实现的。
C++语言:
<span style="font-family: Arial, Helvetica, sans-serif;">#include<iostream></span>
#include<fstream>//含文件流操作头文件
#include<stdlib.h>
using namespace std;
int main()
{
    int a,mymax=-9999;
    ofstream outfile("myfile.dat",ios::out);//创建写文件对象
    if(!outfile)//判断文件打开是否成功
    {
        cerr<<"open wrong!n";
        exit(1);
    }
    for(int i=0;i<10;i++)//向文件写入数据
    {
        cin>>a;
        outfile<<a<<endl;
    }
    outfile.close();//关闭文件
    ifstream infile("myfile.dat",ios::in);//创建文件读对象
    if(!infile)<span style="font-family: Arial, Helvetica, sans-serif;">//判断文件打开是否成功</span>
    {
        cerr<<"open wrongn";
        exit(1);
    }
    while(infile>>a)//读取文件的数据
    {
        if(mymax<a)//找出文件数据中的最大者
            mymax=a;
    }
    cout<<"Max="<<mymax<<endl;//输出最大者
    infile.close();//关闭文件
    return 0;
}

C语言:

</pre><pre name="code" class="objc">#include<stdio.h>
#include<stdlib.h>
int main()
{
    FILE *fpin,*fpout;
    int a,i,mymax=-99999;
    fpin=fopen("myfile.dat","w");//以写的方式打开文件
    if(!fpin)//判断文件打开是否成功
    {
        printf("open wrongn");
        exit(1);
    }
    for(i=0;i<10;i++)//向文件写入数据
    {
        scanf("%d",&a);
        fprintf(fpin,"%dn",a);
    }
    printf("写入完成!n");//写入完成提示
    fclose(fpin);//关闭文件
    fpout=fopen("myfile.dat","r");//以读的方式打开文件
    if(!fpout)//判断文件是否打开成功
    {
        printf("open wrongn");
        exit(1);
    }
    while(!feof(fpout))//判断是否到文件尾
    {
        fscanf(fpout,"%d",&a);//从文件中读取数据
        if(a>mymax)//找出文件数据中的最大者
            mymax=a;
    }
    fclose(fpout);//关闭文件
    printf("Max=%dn",mymax);//输出最大者
    return 0;
}

C、C++文件操作的一般模板:

//必要的头文件
int main()
{
    //创建对象、或指针
    //文件打开方式(只读、只写或其它)
    //判断打开文件是否成功
    //进行读写操作
    //关闭文件,释放空间
    return 0;
}


小结:1)关于C++文件读、写操作中应注意包含必要的头文件:#include<fstream>;而C语言中不含此文件;

2)关于C++主要通过创建文件流对象(文件名+打开方式),由文件流对象调用相应的成员函数(close())来实现;而C中通过创建文件指针,并调用相关的库函数(close(),feof(),fscanf(),fprintf())来实现。

3)无论是C还是C++都应该注意,对文件打开操作后应立即判断其指针或对象是否为空;并且在文件操作结束后及时关闭文件,释放空间。

P.S:关于文件的简单读写,其实和将数据从键盘输入、输出有很多相似之处。如,从键盘输入数据:在C中,scanf("%d",&a),而输入到文件中为:fprintf(fpout,"%d",a);

对于从标屏输出数据:在C中,printf("%dn",a),而从文件读取数据为fscanf(fpout,"%d",&a).(C++也是类似的)这样一看,是不是有点“反”着来的感觉?

最后

以上就是外向小土豆为你收集整理的C与C++简单文件操作比较的全部内容,希望文章能够帮你解决C与C++简单文件操作比较所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部