2014-10-16 3 views
0

У меня есть эта программа, которую я пишу, чтобы читать и вычислять принцип и интерес из файла и печатать таблицу в выходной файл. Все работает отлично, но я не могу понять, почему я застрял в цикле while. Он правильно печатает все мои данные, но он постоянно ждет другого значения и не выходит. Может ли кто-нибудь пролить свет на меня?конец файла бесконечный while-loop

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 никогда не будет равным пробелу, поэтому он никогда не покинет этот цикл. Вы также застрянете, если файл не закончится в пространстве.

Вы должны проверить eof в цикле getData().

+0

Я пропустил это. Спасибо!!! –

Смежные вопросы