gpt4 book ai didi

c++ - 文件结束无限while循环

转载 作者:行者123 更新时间:2023-11-27 23:02:28 25 4
gpt4 key购买 nike

我正在编写这个程序,用于从文件中读取和计算本金和利息,并将表格打印到输出文件。一切正常,除了我不明白为什么我被困在 main 的 while 循环中。它正确地打印了我所有的数据,但它一直在等待另一个值并且不会退出。谁能给我一些启发?

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;
}

最佳答案

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

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

关于c++ - 文件结束无限while循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26408179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com