• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:fgetsの処理を詳しく説明してください、お願いします。)

fgetsの処理について詳しく説明

このQ&Aのポイント
  • fgetsの使い方や動作原理について詳しく解説します。
  • fgetsはファイルから一行ずつ読み込む関数であり、while文を使って複数行の読み込みが可能です。
  • 行ごとに読み込んだデータはlineという変数に格納され、printfを使って表示することができます。

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

  • ベストアンサー
  • yakou850
  • ベストアンサー率49% (25/51)
回答No.4

No.1を書いたものです。 参考ページのほうではその現在位置をファイルなどの頭に戻す 関数の解説が書かれています。 rewindという関数なのですが、今回はrewind(stream)というように 使えるはずです。 というのはfopenしたstream(おそらくFILE *streamなどと宣言しているでしょう) に現在位置が記録されているんです。 なので、fgetsなどにファイルポインタstreamが必要なんです。 どこから読み出すのか知りたいですからね。 説明へたでわかりにくくて申し訳ありません。

参考URL:
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vclib/html/_crt_rewind.asp
tsukiyono
質問者

お礼

大変わかり易い説明ありがとうございました。 まさにファイルポインタはポインタなんですね。 今までは実感がなかったんですがファイルポインタの価値までわかってとてもすっきりしました。 使い方を理解しただけで理解しているような気になっているものが多いなと勉強不足を感じました。 また質問することもあると思いますが、見かけられましたら、ご教授ください。

その他の回答 (3)

回答No.3

電子ファイルでなく、マークシート(OMR)やOCRを考えると分かりやすいかも知れません。 カード読み取り機でカードを読み込むと、読み込み済みのものはどんどん排出されて行きます。入力口には、これから入力するもののみ残っています。 この読み込み動作を行わせる命令が、C言語の場合は、fgetsになります。

tsukiyono
質問者

お礼

ありがとうございます。 実際に置き換えて考えると理解し易いんですね

  • yakou850
  • ベストアンサー率49% (25/51)
回答No.2

まずfgets(line,100,stream)というのは ファイルポインタstreamの現在位置から改行文字までか 100文字分を受け取りlineにいれます。 100文字以上が1行に入っていると同じ行をつづけて読みます。 こういったように「どこまでは読んだ」という記録が残っていて 読み込みを繰り返すたびに位置がずれて、行数をずらしているものです。 あまり説明がうまくないのでわかりにくかったら申し訳ありません。

tsukiyono
質問者

補足

一行ずつが強く残っていて、文字制限の事を失念してました。 なぜ続きから始まるのかは、ご説明で理解できたのですが、「どこまで読んだ」という記録はどこに保持されているのでしょう?

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

前の続きから読み込むからです。

関連するQ&A