关于结构体指针以及文件的读取问题

快乐的逗比 2011-12-15 04:01:34
下边代码哪里错了?我找了半天找不到啊?
#include <iostream>
#include <fstream>
#include <iomanip>
#include <stdlib.h>

typedef struct strArrayInfo
{
int K;
int N1,N2;
double *x; /*序列1*/
double *y; /*序列2*/
}ARRAYINFO;

using namespace std;

ARRAYINFO ReadArrayInfo();
double CalcKthSmallestElem(ARRAYINFO info);

void main()
{
ARRAYINFO info;
info = ReadArrayInfo();
CalcKthSmallestElem(info);
}

ARRAYINFO ReadArrayInfo()
{
int i;
ifstream infile("input.txt",ios_base::in);
ARRAYINFO INFO;
infile >> INFO.K;
infile >> INFO.N1;
infile >> INFO.N2;
INFO.x = new double[INFO.N1];
INFO.y = new double[INFO.N2];
for(i = 0;i < INFO.N1;i++)
{
infile >> INFO.x[i];
cout << INFO.x[i] << endl;
}
for(i = 0;i < INFO.N2;i++)
{
infile >> INFO.y[i];
cout << INFO.y[i] << endl;
}
cout<<INFO.y[0]<<endl;
delete []INFO.x;
delete []INFO.y;
infile.close();
return INFO;
}

double CalcKthSmallestElem(ARRAYINFO info)
{
cout<<info.K<<endl;
cout<<info.N1<<endl;
cout<<info.N2<<endl;
for(int i=0;i < info.N1;i++)
cout<<info.x[i]<<endl;
for(int j=0;j<info.N2;j++)
cout<<info.y[j]<<endl;
return 0;
}
读取文件:

2
3 2
1.12 3.09 4.00
6.13 7.78

info.y[0]是不确定值
当改为如下情况:

2
3 3
1.12 3.09 4.00
6.23 7.78 1.23
可以正确输出结果

但是,继续修改为如下情况:

2
3 4
1.12 3.09 4.00
6.23 7.78 1.23 2.34
info.y[0]又成了不确定值,这到底是为什么呢?跪求高人解答,谢谢
...全文
85 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
柯本 2011-12-15
  • 打赏
  • 举报
回复
粗看下,程序的问题应该在
delete []INFO.x;
delete []INFO.y;
你把它释放了,后面的程序数据就要出错的
把它们去掉试试
快乐的逗比 2011-12-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xpingping 的回复:]
调试过代码了,
我把
delete []INFO.x;
delete []INFO.y;
注释掉了,
info.y[0]是文件里要输出的值呀
[/Quote]
额,明白一些了,我还需要用这些数据,结果就提前释放了栈空间了
快乐的逗比 2011-12-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xpingping 的回复:]
调试过代码了,
我把
delete []INFO.x;
delete []INFO.y;
注释掉了,
info.y[0]是文件里要输出的值呀
[/Quote]
能再具体一下么?其实这是我一个大程序的一部分,我感觉自己这部分有问题,就单独建立了一个小程序。
xpingping 2011-12-15
  • 打赏
  • 举报
回复
调试过代码了,
我把
delete []INFO.x;
delete []INFO.y;
注释掉了,
info.y[0]是文件里要输出的值呀

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧