Чтение из входного файла

#c

#c

Вопрос:

 #include <iostream>
#include <fstream>
using namespace std;

int main(int argc, char *argv[]) {
    int size = 0;
    int highNum = 0;
    int m;
    string fname;

    cout << "Supply the name of the input file you would like to use." << endl;
    cin >> fname;

    ifstream input;
    input.open(fname.c_str());
    input >> size;
    int numbers[size];

    for (int n = 0; n < size; n  )
        input >> numbers[n];

    for (m = 0 ; m < size ; m  )
    {
        if (numbers[m] > highNum)
            highNum = numbers[m];
    }
    int j;
    int k;
    bool values[] = {false, false, false, false, false, false};

    for (j = highNum; j > 0 ; j--)
    {
        for (k = size - 1 ; k >= 0 ; k--)
        {
            if (j <= numbers[k])
                values[k] = true;
        }

        if (values[0])
            cout << "| xxx";
        else
            cout << "|    ";
        if (values[1])
            cout << "      ";
        else
            cout << "      ";
        if (values[2])
            cout << "   ***";
        else
            cout << "      ";
        if (values[3])
            cout << "   ---";
        else
            cout << "      ";
        if (values[4])
            cout << "      ";
        else
            cout << "      ";
        if (values[5])
            cout << "      " << endl;
        else
            cout << "      " << endl;

    }

    return 0;
}
  

Я пытаюсь написать код для печати гистограммы, считывая целые числа из отдельного текстового файла. Я опубликовал полный код, но я знаю, что нижняя половина работает, если вы просто вводите числа. Мне было интересно, в чем проблема, учитывая, что в том же каталоге есть файл данных. Когда я запускаю эту программу и ввожу имя файла данных, который я создал для ее тестирования, программа запускается, но график не создается.

Комментарии:

1. int numbers[size]; недопустимо в стандартном c .

2. @Dani, да, но легионы людей используют g и даже не понимают, что это нестандартно. 🙂

Ответ №1:

Ваша программа работает для меня. Я полагаю, что ваш входной файл отсутствует в текущем рабочем каталоге вашего процесса. Я предлагаю вам добавить проверку, чтобы убедиться, что input она действительна после вызова open .