-5

このコードに問題があります。

コードで探しているのは、「first」と「second」の結果をランダムに取得し、結果をファイルに入れることです。

ファイルを使用せずに実行すると、すべて正しい結果が得られますが、結果をファイルに保存しようとすると、(first、secnd) を含む最初のノードしか得られません。

コードは次のとおりです。

#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

間違った場所でファイルを開いています。ループの前にファイルを 1 回開き、ループの後にファイルを 1 回閉じます。このような。

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

のデフォルトのオープン フラグはofstream、ファイルを切り捨てる (上書きする) ことです。ループを介して毎回ファイルを開いたり閉じたりしています。ファイルにすべての結果が必要な場合は、ループの外側で一度開き、ループの後で閉じます。

于 2012-10-28T22:19:15.560 に答える