C++如何通过 fprintf fscanf等函数 实现循环读取?

我想实现把16个,double的数,作为一列,存到E盘的一个txt文件中,然后再依次读出来,且把第1,5,9.13个数存到数组a[]中,第2,6,10.14存到b[](就... 我想实现 把16个,double的数,作为一列,存到E盘的一个txt文件中,然后再依次读出来,且把第1,5,9.13个数存到数组a[]中,第2,6,10.14存到b[] (就是根据除4余几)依次类推 c[],d[],如何通过fprintf fscanf fopen等 实现? 或者通过其他方法也行 展开
 我来答
kingdjh
推荐于2016-06-01 · TA获得超过955个赞
知道小有建树答主
回答量:939
采纳率:66%
帮助的人:837万
展开全部

竟然是c++,干嘛要用c的文件操作方法呢,用c++的文件流不是挺好的吗?以下是用文件流的

#include <iostream>
#include <fstream>

using namespace std;

void main(void)
{
double n[16];
int i;
double a[4], b[4], c[4], d[4];
fstream file;
for(i=0;i<16;i++) //16个数据初始化
{
n[i]=i+1+(i*16)/1000.0;
if(i%4==0&&i!=0) cout<<endl;
cout<<n[i]<<'\t';
}
file.open("D:\\1.txt",ios::out);
if(!file.is_open())
{
cout<<"1.txt打开失败"<<endl;
exit(1);
}
for(i=0;i<16;i++)
file<<n[i]<<endl;
file.close();
i=0;
file.open("D:\\1.txt",ios::in);
if(!file.is_open())
{
cout<<"1.txt打开失败"<<endl;
exit(2);
}
cout<<endl;
i=0;
while(file>>n[0])
{
i++;
switch( i%4 )
{
case 1:
a[i/4]=n[0];
break;
case 2:
b[i/4]=n[0];
break;
case 3:
c[i/4]=n[0];
break;
case 0:
d[i/4-1]=n[0];
break;
default: break;
}
}
cout<<"a = "<<a[0]<<'\t'<<a[1]<<'\t'<<a[2]<<'\t'<<a[3]<<endl
<<"b = "<<b[0]<<'\t'<<b[1]<<'\t'<<b[2]<<'\t'<<b[3]<<endl
<<"c = "<<c[0]<<'\t'<<c[1]<<'\t'<<c[2]<<'\t'<<c[3]<<endl
<<"d = "<<d[0]<<'\t'<<d[1]<<'\t'<<d[2]<<'\t'<<d[3]<<endl;
}
更多追问追答
追问
哇 好厉害! while(file>>n[0])这个是什么意思?难道file里的数 会每次循环依次自动进入n[0]这一个元素中?
还有 我其实是要在QT里用 如果不加namespance std 不认fstream啊 我头文件都包含了啊
#include "mainwindow.h" "ui_mainwindow.h"
追答
while(file>>n[0])//这句是到了文件末尾就自动退出循环,停止读文件

你不像用namespace的话可以把头文件加入.h后缀,不过qt好像没有自己的namespace所以不会造成混淆吧
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式