首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >文件结束无限时间循环

文件结束无限时间循环
EN

Stack Overflow用户
提问于 2014-10-16 15:25:02
回答 1查看 483关注 0票数 0

我编写这个程序是为了从文件中读取和计算原理和兴趣,并将表打印到输出文件。一切都很好,除了我不知道为什么我被困在主要的时间循环。它正确地打印了我的所有数据,但是它不断地等待另一个值,并且不退出。有人能给我一点启示吗?

代码语言:javascript
复制
int main()
{
  ifstream inData;
  ofstream outData;
  float principle=0;
  int years;
  float rate;

  inData.open("inputdata.txt");
  if (!inData){
   cout<<"Error opening file."<<endl;
   return 1;}

  outData.open("outputdata.txt");
  if (!outData){
   cout<<"Error opening file."<<endl;
   return 1;}

  getData(inData, principle, years, rate);

  while(!inData.eof(){
    printTable(outData, principle, years, rate);

    principle=0;
    getData(inData, principle, years, rate);
  }

  return 0;
}

void getData (ifstream& inData, float& principle, int& years, float& rate)
{
 char temp;
 int temp2=0;

 inData.get(temp);

 while(temp!=' '){
    if(isdigit(temp)){
        temp2=temp-'0';
        principle=(10*principle)+temp2;}

    inData.get(temp);
 }

 inData>>years>>rate;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-16 15:29:59

在您阅读了最后一条记录之后,它将最后一次调用getData()。它将读取temp,并将失败,因为它位于文件的末尾。然后它进入while循环。temp永远不会等于一个空间,所以它永远不会退出这个循环。如果文件没有以空格结尾,您也会被卡住。

您需要在eof while循环中检查getData()

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26408179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档