Программа чтения файлов имеет… проблему с черным экраном

0

Хорошо, так что у меня с этим немного проблемы. Это для домашней работы, в частности, для моего C++ программирования I, но у меня есть то, что я считаю логическим недостатком. Все, что он должен делать в это время, считывается в информации из указанного файла, сохраняет его в паре параллельных двумерных массивов (один для строковых данных, другой для числовых данных), а затем печатает их на экране. Больше ничего еще не было добавлено, и это не требуется до второй половины проекта.

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

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

using namespace std;

void readFile(int numericData[80] [4], string textData[80] [7]);
void printData(int numericData[80] [4], string textData[80] [7]);

int main()
{
    string trash;
    string textData [80] [7];
    /* columns: 0 = name 1 = Weakness 2 = drops
    3 = stealables 4 = poach item
    5 = appearnce type 6 = location */

    int numericData [80] [4];
    // columns: 0 = HP 1 = XP 2 = LP 3 = diff rank
    // used 2 multi-dimensional parallel arrays to avoid 10 parallel arrays

    readFile(numericData, textData);
    printData(numericData, textData);

    return 0;
}

void readFile(int numericData[80] [4], string textData[80] [7])
{
    ifstream inputFile;
    inputFile.open("filename");

    string trash;
    string rankConverter;
    for (int i = 0; i < 169; i++)
    {
        getline(inputFile, trash);
    }
    //throws out first 173 trash lines, until first usale line.


    for (int rareReader = 0; rareReader < 80; rareReader++)
    {
        // edited for brevity. this section reads each individual component
        // of the file and inserts them into the appropriate array section.

        do
        {
            getline(inputFile, trash);
        }
        while (trash != "end-entry marker");
        // throws away the rest of each entry as trash
    }
    //felt it relevant to mention that the following close command is before all
    //lines of the file have been read and thrown out. not sure if relevant.
    inputFile.close();
}



void printData(int numericData[80] [4], string textData[80] [7])
{
    cout << setw(10) << "Name";
    cout << setw(10) << "HP";
    cout << setw(10) << "XP";
    cout << setw(10) << "LP";
    cout << setw(6) << "Rank";
    cout << setw(10) << "Weakness";
    cout << setw(10) << "Sprite";
    cout << setw(10) << "Poach" << endl;
        cout << setw(20) << "Drop";
    cout << setw(20) << "Steals";
    cout << setw(20) << "Location";



    for (int printCount = 0; printCount < 80; printCount++)
    {
        cout << setw(10) << textData[printCount][0];
        cout << setw(10) << numericData[printCount][0];
        cout << setw(10) << numericData[printCount][1];
        cout << setw(10) << numericData[printCount][2];
        cout << setw(6) << numericData[printCount][3];
        cout << setw(10) << textData[printCount][1];
        cout << setw(10) << textData[printCount][5];
        cout << setw(10) << textData[printCount][4] << endl;
        cout << setw(20) << textData[printCount][2];
        cout << setw(20) << textData[printCount][3];
        cout << setw(20) << textData[printCount][6];
        /* columns: 0 = name 1 = Weakness 2 = drops
        3 = stealables 4 = poach item
        5 = appearnce type 6 = location */
        //copy of note for convenience in reading
    }
}
  • 2
    Вы пытались отладить это? Также покажите нам короткий образец вашего вклада. Насколько я понимаю, вы не проверяете inputFile.open() на ошибки, ваш do {} while(); может работать вечно из - за istream с множеством failbit.
  • 0
    это вероятно (на самом деле определенно) не является причиной вашей ошибки, но я не вижу, чтобы вы numericData textData матрицы numericData и textData где-либо в программе, но вы читали из них в функции printData . это, вероятно, приведет к тому, что ваша функция printData пустые строки / значения мусора.
Показать ещё 2 комментария
Теги:
readfile

1 ответ

1

Программа, скорее всего, где-то висит. Попробуйте выполнить печать на экране в начале программы. Если это работает, продолжайте добавлять вызовы "cout", чтобы печатать больше отладочных сообщений, пока не найдете точку, в которой висит программа. Это метод отладки, который вы будете использовать снова и снова. Иногда называется отладкой "cave man", поскольку более сложной альтернативой является прикрепление отладчика и переход через ваш код.

  • 0
    Это действительно не ответ - в том, что это не решает его проблему. Предложение отладки OP должно быть комментарием.
  • 0
    Я все еще часто использую этого «пещерного человека» (+1 для термина :)). Потому что это действительно самый быстрый способ выследить местоположение ошибки.
Показать ещё 5 комментариев

Ещё вопросы

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