所以我的程序应该生成 30 个随机数,将它们放入文件中,然后将这些数字保存在数组中,但是当我尝试打印文件中的数字时,它们不是文件中的数字,而是一些随机的大数字。
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <fstream>
using namespace std;
void sortFile() {
fstream f;
int numbers[30];
int n;
f.open("f.txt");
srand(time(NULL));
for(int i; i < 30; i++) {
f << rand() % 30 + (-9) << endl;
}
while(!f.eof()) {
f >> numbers[n];
n++;
}
f.close();
for(int i; i<30;i++) {
cout << numbers[i] << endl;
}
}
int main() {
sortFile();
}
写入后应关闭文件,开始读取时再次打开文件。您还应该修复 while 循环while (!f.eof())
是错的。而且你忘了初始化n
(如上面评论中指出的)。这是一些固定代码
f.open("f.txt"); // open file for writing
srand(time(NULL));
for(int i; i < 30; i++) {
f << rand() % 30 + (-9) << endl;
}
f.close();
f.open("f.txt", ios_base::in); // open file for reading
n = 0;
while(f >> numbers[n]) {
n++;
}
f.close();
在阅读和写作之间切换时必须小心。在您的代码中,您假设当您从写入更改为读取时,文件会神奇地倒回到开头,但没有任何神奇的事情发生。关闭并重新打开文件是倒回文件的一种方法。另一种(也许更好)的方法是使用两个单独的文件变量进行读取和写入。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)