2016-09-19 6 views
1

を使用して.datファイルへの2つの行列を書き込みます。 Netbeansは、このコードはビルドには良いと言いますが、実行すると失敗し、なぜ私にそのことを伝えません。は、私はいくつかの行列と私はIDEとしてNetBeansの中で書いているC.</p> <p>を使用して.datファイルに入れます、コードを書いているC

使用しているIDEに問題がありますか?

ここにコードのセクションを示します(私はstdio.hとstdlib.hをソースファイルに含めています)。

//this is supposed to make a pair of example matrices. 
    double A[10][10]; 
    double B[10][10]; 

    int i , j; 

    for (i=0; i < 10 ; i++) 
    { 
     for(i=0; i < 10 ; i++) 
     { 
      A[i][j]= 1.0 ; 
      B[i][j]= 1.0 ; 
     } 
    } 

    //this is supposed to make the .dat file 
    FILE *fp2; 


    fp2 = fopen("MatricesFile.dat","w"); 

    if(fp2 == NULL) 
    { 
     printf("Error in opening file"); 
     return 1; 
    } 

    else 
    { 
     for(int i = 0 ; i < 10 ; i++) 
     { 
     for(int j = 0 ; j < 10 ; j++) 
     { 
      fwrite(&A[i][j], sizeof(A[i][j]), 1, fp2); 
      fwrite(&B[i][j], sizeof(B[i][j]), 1, fp2); 
     }  
     } 
    } 

    fclose(fp2); 

ありがとうございました。

+5

for(i = 0; i <10; i ++){for(i = 0; i <10; i ++){...}} '2番目のループで' j 'にする必要があります。 – pzaenger

+0

バイナリモードで書き込むには、おそらくファイルを開くべきです:fopen(...、 "wb"); –

+1

実行時のバグについて教えてくれるのはIDEの仕事ではありません。 –

答えて

2

コード内に2つの明らかな問題があります。

ループをネストするときは、内部ループと外部ループを異なる変数で制御します。少なくとも1つのループでiを使用して、内側ループと外側ループの両方を制御します。

fwrite()fread()を使用する場合は、ファイルをバイナリモードで開きます(書き込み用に開くには、"wb"を使用します)。さもなければ、書き出されたデータは、必ずしも正しく読み取られるとは限らない。

問題が発生したときはいつでも、IDEまたはコンパイラを責めないという習慣から脱してください。 IDEやコンパイラにはバグがありますが、遭遇する問題の大半はコーディングの欠陥によるものです。ここの場合と同じです。

+0

ああ!ありがとう。コードはうまく機能していると思います。それは失敗していないが、今は別のセクションで起こっている何かの原因のため、何らかのループで動かなくなっている。感謝! – STHB

関連する問題