shirokosi さんが書きました:
はじめまして。
参考になりそうなコードを書いてみました。
よろしければお使いください。
ありがとうございます。ぜひ参考にさせていただきます。
softya(ソフト屋) さんが書きました:
fscanfは入力エラーの場合でも戻り値でEOFを返しますので、EOFで終了と判定するのは本来間違いです。
エラーでもファイルの終端でもEOFを返すのなら、ファイル終端とエラーを区別できればいいのでは、と考え
コード:
while( p = getmemory(), fscanf(fp, "%d %d %lf %lf", p->id, p->sub_a, p->sub_b, p->sub_c) != EOF){
old->next = p;
old = p;
}
と書いていたところを、下のように書いてみたのですが
コード:
while(!feof(fp)){
p = getmemory();
fscanf( fp, "%d %d %lf %lf", &(p->id), &(p->sub_a), &(p->sub_b), &(p->sub_c) );
old->next = p;
old = p;
}
結果は相変わらず700行~1000行の間の300行程度しか読み込めないまま。
例えば、1行目から100行目まで読み込んでいるのであれば、101行目のデータがおかしいのかなと、なんとなく想像がつくのですが
スタートが700行目からになっている原因がよく分かりません。それまでのデータはどこへ・・・。
データであるtxtファイルを添付しておきますので、ご確認していただければ幸いです。