首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请问一个简单的关于从文件读入数据的有关问题

2012-02-05 
请教一个简单的关于从文件读入数据的问题我先定义了一个如下的struct:structs_zi{intiddoubleeintncdou

请教一个简单的关于从文件读入数据的问题
我先定义了一个如下的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下测试的

热点排行