2

ねえ、私はVisual Studioで多くのプログラムを試しましたが、ほとんどの場合、ストリームから入力を取得しようとすると(使用中にfscanf)、常にスローされます。debug assertion failed error ..

そして続けて言う:

stream != NULL。このエラーが何度も発生しているので..使用方法に欠陥があると思いfscanfます。誰かが私に使用法を教えてくれるか、..簡単な使用法を説明するデモサンプルコードを教えていただければ幸いです..!

私はエラーを調べてみました..ほとんどの場所で、ファイルを閉じていないと表示されました..しかし、私は持っていて、少し混乱しています..助けてくれてありがとう..どうもありがとう:)

    printf("Enter No of states\n");
     Q=5;
  //  scanf("%d",&Q);

   // READING ZERO MATRIX
  // reading the matrix from f0.sta
 {
  FILE *fp;
   fp = fopen("c:\\tc\\fuzzy\\f0.sta","r");
   for(i=1;i<=Q;i++)
    for(j=1;j<=Q;j++)
     fscanf(fp,"%f",&a0[i][j]);

    fclose(fp);
 }
 // READING ONE MATRIX
 // reading the matrix from f0.sta
   FILE *fp;
    fp = fopen("c:\\tc\\fuzzy\\f1.sta","r");
     for(i=1;i<=Q;i++)
      for(j=1;j<=Q;j++)
        fscanf(fp,"%f",&a1[i][j]);

    fclose(fp);

これはコードビットです。

4

2 に答える 2

3

fpNULLのようです。最も可能性の高い理由は、ファイルの1つ(または両方)が存在しないか、開くことができないことです(たとえば、他のプロセスがそれを使用しているため)。

2つの呼び出しの後にエラーチェックを追加することから始めfopen()ます。結果をと比較しNULL、そうである場合はNULL調べerrnoます。

于 2012-01-03T18:51:31.983 に答える
0

ループカウンターは0ではなく1から始まります。これは、Cプログラミングでは奇妙です。発生する可能性が高いのは、アレイに十分なスペースを割り当てていない、つまり、

double a[5][5];

必要なときに

double a[6][6];

つまり、配列の終わりを超えて何かを踏んでいるのです。ループを作成することをお勧めします

for(i=0;i<Q;i++)
  for(j=0;j<Q;j++)

したがって、アレイの0スロットを無駄にしないでください。

于 2012-01-03T18:55:29.970 に答える