我编写这个程序是为了从文件中读取和计算原理和兴趣,并将表打印到输出文件。一切都很好,除了我不知道为什么我被困在主要的时间循环。它正确地打印了我的所有数据,但是它不断地等待另一个值,并且不退出。有人能给我一点启示吗?
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;
}发布于 2014-10-16 15:29:59
在您阅读了最后一条记录之后,它将最后一次调用getData()。它将读取temp,并将失败,因为它位于文件的末尾。然后它进入while循环。temp永远不会等于一个空间,所以它永远不会退出这个循环。如果文件没有以空格结尾,您也会被卡住。
您需要在eof while循环中检查getData()。
https://stackoverflow.com/questions/26408179
复制相似问题