文件输入以空格结束的问题?为什么会出现-858993460?

changej 2011-08-01 02:04:25
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;

void input(istream& ins,int array[],int& i);
//前条件:ins已经连接到一个输入流可以是键盘,也可以是文件
//后条件:一次读取输入流的int整型数值,并存入一个数组
void sort(int array[],int size);
//前条件:一个数组已经存在,并且大小已知了
//后条件:重新排序数组,使数组按升序排列


int main()
{
int i=0,array[30];
ifstream in_stream;

in_stream.open("textfile6_1.txt");
if(in_stream.fail())
{
cout <<"Input file opening failed!\n";
exit(1);
}
input(in_stream,array,i);
sort(array,i-1);
cout <<"The max is:"<<array[i-1]<<endl;
cout <<"The min is:"<<array[0]<<endl;

return 0;
}

void input(istream& ins,int array[],int& i)
{
while(!ins.eof())//重点是这里,如果输入文件里是:1[空格]...22[空格]1,那么输出正常
{
ins >>array[i];//如果输入文件里是1[空格]...22[空格]1[空格],那么读入的最后一个字符是
cout <<array[i]<<endl;//-858993460,为什么会这样呢?????
i++;
}
}

void sort(int array[],int size)
{

while(size!=0)
{
int j=0,k=1;
for(int n=0;n<size;n++)
{
if(array[j]>array[k])
{
int temp;
temp=array[j];
array[j]=array[k];
array[k]=temp;
}
j++;
k++;
}
size--;
}

}

问题:
问题在input函数那里,如果以空格或者回车之类的空白字符结束,就会出现最后读入的数据是-858993460,如果以普通字符结束,就不会出现这种情况,请问,为什么会这样呢?还有记事本里面的文件结束标志可以读取和输出么?
...全文
219 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
luciferisnotsatan 2011-08-01
  • 打赏
  • 举报
回复
1空格22空格

第一次读1
不是eof
第二次读22
后面还有空格,不是eof
第3次
出问题了,实际上没东西读。
luciferisnotsatan 2011-08-01
  • 打赏
  • 举报
回复
最后是空格的话,那么while(!ins.eof())不为真(还有空格),再读一次,但没东西读。
爱听空 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 yiyefangzhou24 的回复:]
C/C++ code

void input(istream& ins,int array[],int& i)


而你传递进去的是input(in_stream,array,i);
显然问题
[/Quote]
问题的关键是,我输入文件里面如果以空格结尾,就输出异常,如果以正常字符结尾,就没有任何问题,所以,这个是没有问题的吧,应该?麻烦可不可以说的详细点啊,这里什么问题呀,麻烦了麻烦了
yiyefangzhou24 2011-08-01
  • 打赏
  • 举报
回复
void input(istream& ins,int array[],int& i)

而你传递进去的是input(in_stream,array,i);
显然问题
i浩n诺 2011-08-01
  • 打赏
  • 举报
回复
-858993460 => 0xcccccccc
i打出来看看吧
爱听空 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hua_yang 的回复:]
array初始化一下试试
memset(array, 0, 30);
[/Quote]
好像不是这个的问题,我刚才初始化了,还是有同样的问题,应该不是初始化的问题
hua_yang 2011-08-01
  • 打赏
  • 举报
回复
array初始化一下试试
memset(array, 0, 30);

64,654

社区成员

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

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