VC++中数据读取和存储的问题(急)

我想从一个文件中读取数据,并将数据保存起来,文件中的数据是这样的:0.0561830.0159060.0035130.0201470.0054310.0015090.02... 我想从一个文件中读取数据,并将数据保存起来,文件中的数据是这样的:
0.056183 0.015906 0.003513
0.020147 0.005431 0.001509
0.026044 0.001199 0.001091 (每行数据间是按TAB分隔)
我已经定义好了一个
class Point
{
double x;
double y;
double z;
};
再定义一个对象数组
Point point[100];
在应用程序中的相应程序段中写的程序如下:
void CTempView::OnDu()
{
CFileDialog fileDlg(TRUE);
fileDlg.m_ofn.lpstrTitle="我要打开对话框";
fileDlg.m_ofn.lpstrFilter="CJP Files (*.cjp)\0*.cjp\0 \
(*.txt)\0*.txt\0All Files(*.*)\0*.*\0\0";
if(IDOK==fileDlg.DoModal())
{
CFile file(fileDlg.GetFileName(),CFile::modeRead);
..........//后面的不知道怎么写了
}
请问后面怎么样写.才能在点OK按钮选取文件后,将文件前三行中每一行的第一个数放入point对象数组中的每个对象的x,第2个数放入y,第三个数放入z. 最好是用CFile的Read函数实现.请高手帮忙写下程序.
如果我想用FILE *fp=fopen(fileDlg.GetFileName(),"r");
for(int i=0;i<3;i++)
{if(feof(fp)) break;
fscanf(fp,"%lf\t%lf\t%lf",&point[i].x,&point[i].y,
&point[i].z);
}这段程序有什么问题
展开
 我来答
表宜0GO
2008-01-04 · 超过26用户采纳过TA的回答
知道答主
回答量:97
采纳率:0%
帮助的人:88.1万
展开全部
我提供些参考意见:
1. 使用对象的序列化来存储对象,用反序列化来从文件中读取数据生成对象。很多关于VC++的书有这方面的介绍,MSDN上也有。而且你可以从网上搜搜。运气好的话,可以弄几个Sample看看

2. CFile类的Read函数要求读多少个字节。而且读取的是字符串。(你文件中存储的也是字符串,虽然你看它们像浮点数),所以你要知道你读一行要读多少个字节。然后对得到的一行用 Tab来进行分割,再将分割后的字符创转化成浮点数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zmjdx
2008-01-04 · TA获得超过857个赞
知道小有建树答主
回答量:258
采纳率:0%
帮助的人:150万
展开全部
我用你的方法测试了,一点问题也没有:
//我想从一个文件中读取数据,并将数据保存起来,文件中的数据是这样的:
//0.056183 0.015906 0.003513
//0.020147 0.005431 0.001509
//0.026044 0.001199 0.001091 (每行数据间是按TAB分隔)
//我已经定义好了一个
#include <stdio.h>
class Point
{
public:
double x;
double y;
double z;
};
//再定义一个对象数组
Point point[100];
//在应用程序中的相应程序段中写的程序如下:
/*void CTempView::*/OnDu()
{
//CFileDialog fileDlg(TRUE);
//fileDlg.m_ofn.lpstrTitle="我要打开对话框";
//fileDlg.m_ofn.lpstrFilter="CJP Files (*.cjp)\0*.cjp\0 \
// (*.txt)\0*.txt\0All Files(*.*)\0*.*\0\0";
//if(IDOK==fileDlg.DoModal())
//{
// CFile file(fileDlg.GetFileName(),CFile::modeRead);
//// ..........//后面的不知道怎么写了
//}
//请问后面怎么样写.才能在点OK按钮选取文件后,将文件前三行中每一行的第一个数放入point对象数组中的每个对象的x,第2个数放入y,第三个数放入z. 最好是用CFile的Read函数实现.请高手帮忙写下程序.
// 问题补充:如果我想用
FILE *fp=fopen("test.txt","r");
for(int i=0;i<3;i++)
{
if(feof(fp))
break;
fscanf(fp,"%lf\t%lf\t%lf",&point[i].x,&point[i].y,&point[i].z);
}//这段程序有什么问题
}

void main()
{
OnDu();
for(int i=0;i<3;i++)
printf("%f,%f,%f\n",point[i].x,point[i].y,point[i].z);
}
能够输出正确结果
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式