こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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)

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

投稿日時 - 2009-11-01 11:16:27

QNo.5413269

すぐに回答ほしいです

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

fgetc.cのコードを転載するのは、著作権上の問題もあるので難しいと思いますが...
# 多分、assert(str!=NULL);でしょうし。

少なくとも処理系が何なのかと、再現可能なソースの全文を補足してください。

投稿日時 - 2009-11-01 12:19:31

お礼

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

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

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

投稿日時 - 2009-11-01 15:01:18

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

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

投稿日時 - 2009-11-01 13:41:35

ANo.1

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

投稿日時 - 2009-11-01 12:15:08

あなたにオススメの質問