fscanfを使用して次のような問題を解決しました。fscanfが関数の値<1を返すのをチェックするのはなぜですか?
サイズSIZEの配列xをテキストファイルから読み込んだ整数で初期化する関数を記述します。関数は引数としてファイルの名前を受け取ります。
解決策は以下のとおりです。ファイル内の各整数をスキャンしている場合、fscanfが値<を返すのはなぜですか? fscanfはスキャンされた要素の数を返すので、0より大きくないはずですか?あなたは、コードの意図誤解しているように見える
void init (char *name)
{
FILE *fp;
int i;
fp = fopen (name, "r");
if (fp == NULL)
{
printf ("no file\n");
return;
}
for (i = 0; i < SIZE; i++)
{
if (fscanf (fp, "%d", &x[i]) < 1)
{
printf ("got %d numbers\n", i);
return;
}
}
fclose (fp);
return;
}
したがって、<1を返した場合、何もスキャンされませんでした。おそらく、データがなくなったでしょうか?おそらくエラーがありますか? – John3136
マニュアルページをお読みください。 '関数は、正常に埋め込まれた引数リストの項目数を返します。この数は、一致する失敗、読み込みエラー、またはファイルの終わりのために予想される項目数に一致するか、またはそれよりも少なくなります(ゼロですら)。 – Gaurav
Linuxの場合、端末に 'man fscanf'と入力するだけで' fscanf'のAPIリファレンスマニュアルを開き、_ **戻り値** _の下のセクションを読むことができます。これは任意の関数呼び出しになります。 – Gaurav