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

爱听空 爱听空 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
#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,如果以普通字符结束,就不会出现这种情况,请问,为什么会这样呢?还有记事本里面的文件结束标志可以读取和输出么?
...全文
评论 7
收藏 已收藏
分享
返回顶部
爱听空
C++ 语言 65,214 成员 250,514 内容