Получение ненужного значения при копировании файла с использованием get ()

0

Поэтому я написал код, который скопирует файл, открыв файл, который будет скопирован, а затем скопирует с него символ char с помощью get. Код:

int main(int argc, char* argv[]) {

    if (argc != 3) {
        cout << "ERROR: Invalid number of arguments.\n";
        return 1;
    }

    ifstream inputFile(argv[1]);
    ofstream outputFile(argv[2]);
    char c;
    if (inputFile.is_open() && outputFile.is_open()) {
        while (!(inputFile.eof())) {
            c = inputFile.get();
            outputFile << c;
        }
    }

    else {
        cout << "Unable to open file(s).\n";
        return 1;
    }

    inputFile.close();
    outputFile.close();

    return 0;
}

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

Теги:
io

1 ответ

2

Цикл должен выглядеть следующим образом:

for (int c; (c = inputFile.get()) != EOF; )
{
    if (!outputFile.put(c))
    {
        // fatal: write error, die
    }
}
  • 0
    int c not char c или EOF не могут быть представимы. Все немного грустно на самом деле; K & R не будет впечатлен.
  • 0
    @AlanStokes: да, конечно, и я действительно это знал. D'о. Спасибо :-)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню