うまく、ファイルをfscanfで読めず

[戻る]
たか 2004/07/26(月) 22:12:05
fprintfで、順番に書かせていった、
10129141401032120
993277705599599299999999999 9999
って言うようなデータですが、
逆にfscanfで読ませようとしたら、
FILE  *fj;
int   ReadParam;
int   L1;

if ((fj = fopen("ShaFi.doc","r+")) == NULL) 
{
  printf("file open error!!\n");
  exit(7);
}
でファイルを開くのに成功しているのに、
for (L1=0;L1<=145;L1++)
{
  if ((j = fscanf(fj, "%d", &ReadParam)) != EOF)
  {
   ::::::::::::::::::::::
   ::::::::::::::::::::::
   ::::::::::::::::::::::
  }
  else
    exit(6);
}
において、EOFにならない(jは1が帰って来る)
のに、ReadParamに入って来るのは、
-2095671880とか、1385605119
というような、桁の大きな数値ばかり。
当然、ReadParamには、
ファイル、Shafi.docの頭から入っている数値どおり、
1、0、1、2と言う感じで
順に入ってくれることを期待しているのに。

RAPT 2004/07/26(月) 22:25:23
scanf() 系で EOFが返ってくるのは、エラー時です。
そもそも、書き込んだときのコードがないので適切な回答はできませんが、
strtok()や " %d" で解決できるような気がします。

ん? 1バイトずつやりたいだけ?
でしたら、あなたの勘違い。基礎が不足しています。
char[]で取得し、1バイトずつ代入してやればいいでしょう。

具体的な期待結果が不明なので、要点のみ。以上。

たか 2004/07/26(月) 23:25:43
[[解決]]
お返事ありがとうございます。
わかりました。
EOFは返っては来ないのですが、
PARTさんの言われるように、
もう単純に、fgetcshちえ、文字型で読んで、
その後は、atoiで整数型に変えるようにしたら
うまくいきました。

お騒がせしました。

古いスレッドには追加発言できません。