電子書籍の厳選無料作品が豊富!

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)

なにが原因なのか分かりません。
よろしくお願いします。

A 回答 (3件)

fgetc.cのコードを転載するのは、著作権上の問題もあるので難しいと思いますが...


# 多分、assert(str!=NULL);でしょうし。

少なくとも処理系が何なのかと、再現可能なソースの全文を補足してください。
    • good
    • 0
この回答へのお礼

ソースコードを見直していたら、for文の繰り返し数よりも、配列の個数が少なく止まっていました。(forは20000回、x[15000]で足りませんでした)

fgetsの関数の原因ではなく、すごく初歩な原因でした。
改めて、勝手な思い込みは良くないと思いました。

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

お礼日時:2009/11/01 15:01

違うテキストファイルでも同様の現象が発生するのでしょうか。


念のためにテキストファイルに問題があるのか、ソースコードに
問題があるのか、切り分けましたか。
    • good
    • 0

f:\dd\vctools\crt_bld\self_x86\crt\src\fgets.c


というファイルの57行目を見せてください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!