2014-10-16 163 views
0

我有這個程序,我正在寫這個程序來讀取和計算文件的原理和興趣,並將表格打印到輸出文件。一切工作正常,但我不明白爲什麼我卡在主循環中。它能正確打印我的所有數據,但它不斷等待另一個值並且不會退出。任何人都可以爲我揭開一些光明嗎?文件末尾無限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; 
} 

回答

4

當您讀完最後一條記錄後,它會在最後一次調用getData()。這將讀取temp,並且會失敗,因爲它位於文件末尾。然後它進入while循環。 temp永遠不會等於一個空格,所以它永遠不會退出該循環。如果文件不在空間中結束,您也將被卡住。

您需要在getData() while循環中檢查eof

+0

我錯過了。謝謝!!! – 2014-10-16 15:35:59