请教一个简单的关于从文件读入数据的问题
我先定义了一个如下的struct:
struct s_zi
{
int id;
double e;
int nc;
double sc[10];
double wc[10];
int nx[10];
double sx[10];
int ny[10];
double sy[10];
};
然后声明变量,从文件中读入数据
s_zi szi;
fin> > szi.id;
fin> > szi.e;
fin> > szi.nc;
if(szi.nc> 0)
{
for(j=0; j <szi.nc; j++)
{
fin> > szi.sc[j];
fin> > szi.wc[j];
fin> > szi.nx[j];
fin> > szi.sx[j];
fin> > szi.ny[j];
fin> > szi.sy[j];
}
}
相应的数据如下:
0 0.650 2
-8.521 -8.521 2 3.000 2 3.500
80.000 8.671 2 3.100 2 3.300
照理说,应该是:szi.sc[0]=-8.521,szi.sc[1]=80.000
但实际上二者皆为0,其它成员变量的数值皆正确,这是为什么呢?
我把读入szi.sc[j]与szi.wc[j]的顺序调换一下,结果szi.sc[j]的数值正确而szi.wc[j]的数值变为0,奇怪,好像是谁在那个位置谁就为0,为什么呢?
[解决办法]
检查你文本的 2 。。-8.521 格式
[解决办法]
?
请直接把你贴出来的这段数据拷贝到文本文件中测试~
P.S. 你用的是windows吗?
[解决办法]
#include <fstream>
#include <iostream>
using namespace std;
struct s_zi
{
int id;
double e;
int nc;
double sc[10];
double wc[10];
int nx[10];
double sx[10];
int ny[10];
double sy[10];
};
int main()
{
fstream fin( "data.txt ");
s_zi szi;
fin> > szi.id;
fin> > szi.e;
fin> > szi.nc;
cout < < szi.id < < " " < < szi.e < < " " < < szi.nc < < endl;
if(szi.nc> 0)
{
for(int j=0; j <szi.nc; j++)
{
fin> > szi.sc[j];
fin> > szi.wc[j];
fin> > szi.nx[j];
fin> > szi.sx[j];
fin> > szi.ny[j];
fin> > szi.sy[j];
}
}
for (int j =0; j <szi.nc; j++)
{
cout < < szi.sc[j] < < " " < < szi.wc[j] < < " " < < szi.nx[j]
< < " " < < szi.sx[j] < < " " < < szi.ny[j] < < " " < < szi.sy[j] < < endl;
}
fin.close();
}
我照着你的那些程序自己写了个main这样测试了下,,,数据就是你这里复制去的,,完整正确啊,不会出现问题啊,,在VC下测试的