-5

我对这段代码有疑问。

我在代码中寻找的是随机获取“第一”和“第二”的结果并将结果放入文件中。

如果我在不使用文件的情况下运行它并且我得到所有正确的结果,它会很好,但是当我尝试将结果保存在文件中时,我只得到包含(第一个,第二个)的第一个节点。

这是代码:

#include<iostream>
#include <fstream>
#include<cmath>

using namespace std;

void main() 
{
    int first[100],secnd[100];

    for (int i=0; i<100 ;i++)
    {   
        first[i]=rand()%500;  //random number from  to 499
        secnd[i]=rand()%500;  //random number from  to 499
        ofstream myfile;
        myfile.open ("example.txt");
        myfile << "Writing this to a file.\n";
        myfile <<first[i]<<" "<<secnd[i];
        myfile.close();
    }
}
4

3 回答 3

5

您在错误的位置打开文件。您在循环之前打开文件一次并在循环之后关闭文件一次。像这样。

myfile.open ("example.txt");
for (int i=0; i<100 ;i++)
{   
   ...
}
myfile.close();

当您打开文件进行输出时,您会删除文件中当前的内容。因此,如果您在循环内打开文件,那么您将丢失之前编写的随机数。

于 2012-10-28T22:19:25.157 回答
1

您正在循环中重新打开文件。这每次都会将文件归零,因此您只能获得最后一个条目。

于 2012-10-28T22:19:07.787 回答
1

an 的默认打开标志ofstream是截断(覆盖)文件。您每次通过循环打开和关闭文件。如果您想要文件中的所有结果,请在循环外打开它一次,并在循环后关闭它。

于 2012-10-28T22:19:15.560 回答