2

問題を引き起こしている私のCコードは次のとおりです。

int main(){
int Steps = 100;
double Time = 10;
double h = Time/Steps;

double r[Steps+1];
double phi[Steps+1];
double u[Steps+1];
double v[Steps+1];

r[0]=0;
phi[0]=0;
u[0]=0;
v[0]=0;

FILE *fp;
fp = fopen("results.dat", "w");

if(fp == NULL){
    printf("Could not open results.dat \n");
    exit(0);
}

int i;
for(i=0; i<Steps; i++){
    fprintf(fp, "%f, %f \n",r[i], phi[i]);
}

fclose(fp);
}

dat ファイルを調べると、いくつかの膨大な数を除いて、ほとんどすべてのエントリが 0.0 です。とてもランダムに見えるので、まだ何かに値を割り当てるとは言っていません。これらの数字が表示される理由を知っている人はいますか?

4

2 に答える 2

5

スタック上に大きなメモリ ブロックを要求しますが、それらの値のチェックや割り当てを行わないため、たまたまメモリ内にあったものをすべて取得します。一部のバイトにはより高い値のビットが設定され、読み取りと書き込みで「ランダムな」データが得られると思います。を見てmemset(3)malloc(3)

于 2013-05-15T03:27:51.047 に答える
1

他の誰かが述べたように、あなたのアレイはスタック上にあります。これらのスタック変数は初期化されず、割り当てられたスタックの内容を反映します。それらをメインの外に移動してグローバルにするか、または int r[10] = {0}; のように初期化します。または calloc/malloc,memset 配列。

于 2013-05-15T04:22:38.310 に答える