2017-05-05 33 views
3

fgets()関数は、ファイルポインタを、私が言及したサイズのパラメータまでの位置に自動的に移動しますか?例えばfgets()はファイルポインタを移動しますか?

ファイルp.txtの内容は、「私はいい子だ」です。 fgets(a、5、fp1)を使用した後、 ファイルポインタは5ポジション先に移動しますか?

どの書籍でもこれを明確に見つけることができませんでした。したがって、クエリ。

+2

'FILE *'は 'fgets()'によって変更されません。 *ファイルオフセット*は(ファイルがシーク可能な場合)可能性があります。 – EOF

+3

私はあなたがなぜ尋ねるのだろうかと思います。そうでないことを示すコードがありますか?この質問にはいくつかの背景が必要です。説明してください。 – 4386427

+1

@SamS - なぜ 'fgets()'に関する質問は 'fread()'に関する質問と重複していると思いますか? – ryyker

答えて

1

fgets(a、5、fp1)を使用した後、ファイルポインタは5ポジション先に移動しますか?

ポインタfp1fgets呼び出し(または任意の他のstdio I/Oルーチン)によって影響されません。 fp1が指すFILEオブジェクトは、新しいファイル位置を反映するように更新されますが、ポインタ自体は変更されません。

+0

Cの参考文献/本をお勧めしますか?私はこの特定の本で見つけることができませんでした。 –

+0

@ArkaPravaPaul:私はHarbison&Steeleの[C:Aリファレンスマニュアル](http://careferencemanual.com)を80年代後半から使用しています(現在は5版、C99までカバーしています)。私はまた、King's [C Programming:A Modern]について良いことを聞いてきました。アプローチ](http://knking.com/books/c/)でも、個人的な経験はありません。また、C言語標準の最新の[オンライン草案](http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf)にブックマークする必要があります。 –

+0

ありがとうございました。乾杯 –

3

ファイルポインタはfgets関数で変更されません。

ただし、ファイルオフセットは、実際にはのバイト数で増分されます。

+1

"読み込んだバイト数"が 'fgets'の2番目の引数と等しくないことを強調してください。 *その値よりも少なくても1つ*少なくなります(EOFや改行、または読み込みエラーにヒットした場合)。 – zwol

関連する問題