C/C++读写文本文件、二进制文件的方法
一:目的
掌握C语言文本文件读写方式;
掌握C语言二进制文件读写方式;
掌握CPP文本文件读写方式;
掌握CPP二进制文件读写方式;
二:C语言文本文件读写
1.文本文件写入
//采用C模式对Txt进行写出
voidTxtWrite_Cmode()
{
//准备数据
intindex[50];
doublex_pos[50],y_pos[50];
for(inti=0;i<50;i++)
{
index[i]=i;
x_pos[i]=rand()%1000*0.01;
y_pos[i]=rand()%2000*0.01;
}
//写出txt
FILE*fid=fopen("txt_out.txt","w");
if(fid==NULL)
{
printf("写出文件失败!\n");
return;
}
for(inti=0;i<50;i++)
{
fprintf(fid,"%03d\t%4.6lf\t%4.6lf\n",index[i],x_pos[i],y_pos[i]);
}
fclose(fid);
}
2.文本文件读取
//采用C模式对Txt进行读取
voidTxtRead_Cmode()
{
FILE*fid=fopen("txt_out.txt","r");
if(fid==NULL)
{
printf("打开%s失败","txt_out.txt");
return;
}
vectorindex;
vectorx_pos;
vectory_pos;
intmode=1;
printf("mode为1,按字符读入并输出;mode为2,按行读入输出;mode为3,知道数据格式,按行读入并输出\n");
scanf("%d",&mode);
if(mode==1)
{
//按字符读入并直接输出
charch;//读取的字符,判断准则为ch不等于结束符EOF(endoffile)
while(EOF!=(ch=fgetc(fid)))
printf("%c",ch);
}
elseif(mode==2)
{
charline[1024];
memset(line,0,1024);
while(!feof(fid))
{
fgets(line,1024,fid);
printf("%s\n",line);//输出
}
}
elseif(mode==3)
{
//知道数据格式,按行读入并存储输出
intindex_tmp;
doublex_tmp,y_tmp;
while(!feof(fid))
{
fscanf(fid,"%d%lf%lf\n",&index_tmp,&x_tmp,&y_tmp);
index.push_back(index_tmp);
x_pos.push_back(x_tmp);
y_pos.push_back(y_tmp);
}
for(inti=0;i
三:C语言二进制文件读写
1.二进制文件写入
//采用C模式写二进制文件
voidDataWrite_CMode()
{
//准备数据
doublepos[200];
for(inti=0;i<200;i++)
pos[i]=i;
//写出数据
FILE*fid;
fid=fopen("binary.dat","wb");
if(fid==NULL)
{
printf("写出文件出错");
return;
}
intmode=1;
printf("mode为1,逐个写入;mode为2,逐行写入\n");
scanf("%d",&mode);
if(1==mode)
{
for(inti=0;i<200;i++)
fwrite(&pos[i],sizeof(double),1,fid);
}
elseif(2==mode)
{
fwrite(pos,sizeof(double),200,fid);
}
fclose(fid);
}
2.二进制文件读取
//采用C模式读二进制文件
voidDataRead_CMode()
{
FILE*fid;
fid=fopen("binary.dat","rb");
if(fid==NULL)
{
printf("读取文件出错");
return;
}
intmode=1;
printf("mode为1,知道pos有多少个;mode为2,不知道pos有多少个\n");
scanf("%d",&mode);
if(1==mode)
{
doublepos[200];
fread(pos,sizeof(double),200,fid);
for(inti=0;i<200;i++)
printf("%lf\n",pos[i]);
free(pos);
}
elseif(2==mode)
{
//获取文件大小
fseek(fid,0,SEEK_END);
longlSize=ftell(fid);
rewind(fid);
//开辟存储空间
intnum=lSize/sizeof(double);
double*pos=(double*)malloc(sizeof(double)*num);
if(pos==NULL)
{
printf("开辟空间出错");
return;
}
fread(pos,sizeof(double),num,fid);
for(inti=0;i
四:C++文本文件读写
1.文本文件写入
//采用CPP模式写txt
voidTxtWrite_CPPmode()
{
//准备数据
intindex[50];
doublex_pos[50],y_pos[50];
for(inti=0;i<50;i++)
{
index[i]=i;
x_pos[i]=rand()%1000*0.01;
y_pos[i]=rand()%2000*0.01;
}
//写出txt
fstreamf("txt_out.txt",ios::out);
if(f.bad())
{
cout<<"打开文件出错"<
2.文本文件读取
//采用CPP模式读取txt
voidTextRead_CPPmode()
{
fstreamf;
f.open("txt_out.txt",ios::in);
//文件打开方式选项:
//ios::in=0x01,//供读,文件不存在则创建(ifstream默认的打开方式)
//ios::out=0x02,//供写,文件不存在则创建,若文件已存在则清空原内容(ofstream默认的打开方式)
//ios::ate=0x04,//文件打开时,指针在文件最后。可改变指针的位置,常和in、out联合使用
//ios::app=0x08,//供写,文件不存在则创建,若文件已存在则在原文件内容后写入新的内容,指针位置总在最后
//ios::trunc=0x10,//在读写前先将文件长度截断为0(默认)
//ios::nocreate=0x20,//文件不存在时产生错误,常和in或app联合使用
//ios::noreplace=0x40,//文件存在时产生错误,常和out联合使用
//ios::binary=0x80//二进制格式文件
vectorindex;
vectorx_pos;
vectory_pos;
if(!f)
{
cout<<"打开文件出错"<>mode;
if(1==mode)
{
//按字节读入并输出
charch;
while(EOF!=(ch=f.get()))
cout<>读入
intindex_temp=0;
doublex_pos_temp=0,y_pos_temp=0;
while(!f.eof())
{
f>>index_temp>>x_pos_temp>>y_pos_temp;
index.push_back(index_temp);
x_pos.push_back(x_pos_temp);
y_pos.push_back(y_pos_temp);
cout<
五:C++二进制文件读写
1.二进制文件写入
//采用CPP模式写二进制文件
voidDataWrite_CPPMode()
{
//准备数据
doublepos[200];
for(inti=0;i<200;i++)
pos[i]=i;
//写出数据
ofstreamf("binary.dat",ios::binary);
if(!f)
{
cout<<"创建文件失败"<
2.二进制文件读取
//采用CPP模式读二进制文件
voidDataRead_CPPMode()
{
doublepos[200];
ifstreamf("binary.dat",ios::binary);
if(!f)
{
cout<<"读取文件失败"<
六总结
1.C语言读写文件均通过FILE指针执行操作,其中文本文件的读写用fprintf,fscanf,二进制文件的读写用fread,fwrite
2.C++读写文件通过fstream、ifstream、ofstream进行操作,文本文件用<<和>>进行读写,二进制文件用read和write进行读写
以上这篇C/C++读写文本文件、二进制文件的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。