• ベストアンサー

fgetsのエラー

C言語でテキストファイルをfgetsで読み込み、for文でfgetsを繰り返しているのですが、テキストファイルの15003行目でfgetsのエラーが出てしまい、止まってしまいます。 20000行まで読み込みたいのですが出来ません。 繰り返しが悪いのかと思い、for文を(i=0;i<10000;i++)と(i=10000;i<20000;i++)で分けても読み込んでも同じ結果でした。 テキストファイルが13880行までの場合はうまくいきました。 ↓Cプログラム↓ FILE *fpo; char line[4096]; for (i=0; i<20000; i++) { if (fgets(line, sizeof(line), fpo) == NULL) return(0); sscanf(line, "%d %lf %lf %lf %lf %lf %lf", &typep[i], &x[0][i], &x[1][i], &v[0][i], &v[1][i],&p[i], &n[i]);    //lineのデータを1つ1つ読み込む } ↓エラー文↓ Debug Assertion Failed! File: f:\dd\vctools\crt_bld\self_x86\crt\src\fgets.c Line:57 Expression:(str!=NULL) なにが原因なのか分かりません。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

fgetc.cのコードを転載するのは、著作権上の問題もあるので難しいと思いますが... # 多分、assert(str!=NULL);でしょうし。 少なくとも処理系が何なのかと、再現可能なソースの全文を補足してください。

ky0110
質問者

お礼

ソースコードを見直していたら、for文の繰り返し数よりも、配列の個数が少なく止まっていました。(forは20000回、x[15000]で足りませんでした) fgetsの関数の原因ではなく、すごく初歩な原因でした。 改めて、勝手な思い込みは良くないと思いました。 ご回答ありがとうございました。

その他の回答 (2)

  • 7L4QOI
  • ベストアンサー率5% (1/17)
回答No.3

違うテキストファイルでも同様の現象が発生するのでしょうか。 念のためにテキストファイルに問題があるのか、ソースコードに 問題があるのか、切り分けましたか。

  • asuncion
  • ベストアンサー率33% (2127/6290)
回答No.1

f:\dd\vctools\crt_bld\self_x86\crt\src\fgets.c というファイルの57行目を見せてください。

関連するQ&A