2012-01-03 17 views
2

fscanfを使用している間、私は(fscanfを使用している間)ストリームからの入力を取るしようとしたとき、私は、Visual Studioで、それらのほとんどに多くのプログラムを試してみたねえ、それは常に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); 

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

+0

あなたのコードをここに入れて、どのように指定された関数を使用しようとしましたか? fscanfをどのように使用すべきかを記述する必要はありません。それがドキュメントの目的です。ドキュメントを読んだり、試したことを見せるためのコード例を貼り付けることができます。おそらく簡単な解決策を提供することができます。 –

+0

@LajosArpad ちょっと、fscanf関数を使用するプログラムの一部を入れました。申し訳ありません。 –

+0

エラーが発生した行は何ですか? –

答えて

3

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

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

+0

あなたは神です... :)ありがとうございました...ヌルとの比較が助けになりました!私は今どのように愚かな私が実現した:) –

+0

@ abhishekb、何年ものプログラミングの後、私はまだNULLをチェックすることを忘れて、ここで終わった。ありがとうNPE。 :) –

0

ループカウンタは、0ではなく1から始まります。これは、Cプログラミングでは奇妙です。どのような可能性が起こっていることは、あなたはあなたが配列の最後まで何かを踏んでいる

double a[6][6]; 

を必要とするとき、あなたが

double a[5][5]; 

を持っている、すなわち、配列に十分なスペースを割り当てていないです。あなたのループを持っている方がいいです。

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

だから、アレイに0スロットを無駄にしないでください。

+0

私はそれを念頭に置き、それを変更していただきありがとうございます:) –

関連する問題