概述
为了更加深刻地理解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++简单文件操作比较所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复