ilyachalov (ilyachalov) wrote,
ilyachalov
ilyachalov

Categories:

Курьез при чтении из файла

Пример из учебника Лафоре, стр.556:
#include <fstream>
#include <iostream>
using namespace std;

int main()
{
    char ch;                     // символ для считывания
    ifstream infile("TEST.TXT"); // входной файл
    while( infile )              // читать до EOF или ошибки
    {
        infile.get(ch);          // считать символ
        cout << ch;              // и вывести его
    }
    cout << endl;
    return 0;
}

Где ошибка?

Ответ:

[Открыть текст ответа]Проверка на отсутствие ошибок (конец файла) при считывании символа из файла в этом примере происходит не перед его использованием (выводом на экран консоли), а после. В результате при возникновении ошибки (или достижении конца файла) метод get не запишет ничего в переменную ch. В этой переменной ch останется последний считанный символ, который в итоге будет выведен на экран консоли дважды.

Как переделать цикл while правильно? Например, вот так:
while (infile.get(ch))
    cout << ch;
Tags: Образование, Программирование
Subscribe

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 0 comments