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; vector x_pos; vector y_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; vector x_pos; vector y_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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。