Проблема при использовании ввода-вывода из файлов c++

При реализации этого кода

и программа запускается, когда появляется черный экран, он остается активным, ничего больше не ждал, и ничего не произошло не закончилось, не дало мне процесс вернул 0, чтобы узнать, что это сделано, выходной файл пуст, если кто-то может сказать мне, что не так здесь

#include<iostream>
#include<fstream>
#include<iomanip>

using namespace std;

int main()
{
ifstream file;
ofstream out;

file.open("coinsCoint.txt");
out.open("1234567.txt");

int pennis,nickle,dime,quarter,sum=0;
float total;

while(!file.eof())
{
    file >> pennis >> nickle >> dime >> quarter;

    sum+=pennis+nickle*5+dime*10+quarter*25;

    total=sum/100.0;

}

out << "Total amount collected is: $" << fixed << showpoint << 
setprecision(2) << total;

file.close();
out.close();

return 0;

}

Вы даже не проверяете, могут ли ваши файлы быть успешно открыты.

πάντα ῥεῖ 27.02.2019 22:18

сделал кучу кодов, не проверяя, не могли бы вы сказать мне, как, пожалуйста, ответить вам спасибо

Kenan Baira 27.02.2019 22:36
while(!file.eof()) — очень распространенная ошибка. Объяснение здесь. Во-первых, он ТОЛЬКО проверяет, достигнут ли конец файла. Если что-то еще пойдет не так, программа пропустит это. Если я не ошибаюсь, это включает в себя то, что файл не открыт.
user4581301 27.02.2019 22:41

Если программа просто сидит и ничего не делает, поместите в свой цикл оператор печати или используйте отладчик для пошагового выполнения кода. Вы, вероятно, узнаете что-то.

Joseph Larson 27.02.2019 22:49
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
4
43
1

Ответы 1

#include<iostream>
#include<fstream>
#include<iomanip>

using namespace std;

int main()
{
    ifstream file;
    ofstream out;

    file.open("coinsCoint.txt");

    int pennis = 0, nickle = 0, dime = 0, quarter = 0, sum = 0;
    float total = 0.0;

    /* check if file is opened */
    if (file.is_open()){

        while (!file.eof())
        {
            file >> pennis >> nickle >> dime >> quarter;
            cout << "pennis " << pennis << endl;
            cout << "nickle " << nickle << endl;
            cout << "dime " << dime << endl;
            cout << "quarter " << quarter << endl;

            sum += pennis + nickle * 5 + dime * 10 + quarter * 25;
            total = sum / 100.0;
            cout << "total " << total;
        }
        file.close();
    }
    /* return if error in file open */
    else {
        cout<< "can not open given file";
        return 0;
    }
    out.open("1234567.txt");

    if (out.is_open()){
        out << "Total amount collected is: $" << fixed << showpoint <<
            setprecision(2) << total;
        out.close();
    }
    return 0;
}

Аналогичный учебник https://www.uow.edu.au/~lukes/TEXTBOOK/notes-cpp/io/readtextfile.html

Вы всегда должны проверять правильность открытия файла с помощью is_open()

Вам нужно использовать cout << для печати, чтобы консоль «черный экран»

файл выглядит так

1
2
3
4

вывод должен быть примерно таким

pennis 1
nickle 2
dime 3
quarter 4
total 1.41Press <RETURN> to close this window...

Я не могу поддержать этот ответ. Он наматывает пластырь на a и устраняет очень простую ошибку, допущенную спрашивающим. while (!file >> pennis >> nickle >> dime >> quarter) в соответствии с рекомендациями Почему iostream::eof внутри условия цикла считается неправильным? поймал бы и выложил недостающий файл.

user4581301 27.02.2019 23:36

Другие вопросы по теме