首页 > 解决方案 > 从文件中读取,并在函数 C++ 中写入数组

问题描述

我想先说这是 102 csc 课程中的第一个作业。我的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命名空间是因为教授希望我们这样做。我明白这不是有效的。

标签: c++arraysfile

解决方案


这是我的解决方案,希望这有助于将来搜索此问题。解决方案是创建另一个数据类型为 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];
    }


}

谢谢各位帮忙!


推荐阅读