Чтение из файла и запись в массив в функции C ++ - PullRequest
0 голосов
/ 30 января 2020

Я хочу предвосхитить это, сказав, что это первое задание в курсе 102 сс c. Мой 101 учитель не был лучшим, поэтому у меня нет такого хорошего фундамента.

У меня есть задание, которое требует, чтобы каждое действие имело свою функцию. Я должен сгенерировать случайные числа, затем записать эти числа в файл, а затем еще несколько вещей. У меня есть файл, созданный и написанный для. Однако у меня возникла проблема, когда я не могу прочитать значения из файла в массив. Все они все равно 0 при выводе на консоль. Я уверен, что это что-то не так с функциями, но у меня нет проблем с критикой. Я включу код ниже. Функция, в которой я сейчас работаю, называется void read().

#include <iostream> 
#include <fstream>
#include <time.h>
#include <stdlib.h>
#include <cstddef>
using namespace std;

fstream randomData;
void randomgenerator();
void read(fstream &randomdata);

int main() {    
    randomgenerator();
    read(randomData);   
    return 0;
}

void randomgenerator() {
    srand(time(0));
    randomData.open("randomData.txt");
    for (int counter = 0; counter < 100; counter++) {
        randomData << rand() % 100+1 << endl;
    }
}

void read(fstream &randomData) {
    int numarray[100] = {};
    for (int i = 0; i < 100; i++) {
        randomData >> numarray[i];
        cout << numarray[i];
    }
}

Спасибо, что нашли время, чтобы внести свой вклад. Пространство имен std используется потому, что этого хочет профессор. Я понимаю, что это не эффективно.

1 Ответ

0 голосов
/ 30 января 2020

Это было решением для меня, надеюсь, это поможет в дальнейшем поиске этой проблемы. Решением было создать другую переменную с типом данных ifstream. Эта переменная обращалась к тому же файлу, но позволяла мне читать из него, а не записывать в него. Мне пришлось закрыть файл из переменной randomData и открыть переменную inputrandomData. Ниже приведен пересмотренный код.

using namespace std;
ofstream randomData;
ifstream inputrandomData;
void randomgenerator();
void read();
int main() {

    randomgenerator();
    read();

    return 0;
}


void randomgenerator() {
    srand(time(0));
    randomData.open("randomData.txt");
    for (int counter = 0; counter < 100; counter++) {
        randomData << rand() % 100+1 << endl;
    }
    randomData.close();

}


void read() {
    inputrandomData.open("randomData.txt");
    int numarray[100] = {};
    for (int i = 0; i < 100; i++) {
        inputrandomData >> numarray[i];
        cout << numarray[i];
    }


}

Спасибо за помощь, ребята!

...