- ベストアンサー
fgetsの処理について詳しく説明
- fgetsの使い方や動作原理について詳しく解説します。
- fgetsはファイルから一行ずつ読み込む関数であり、while文を使って複数行の読み込みが可能です。
- 行ごとに読み込んだデータはlineという変数に格納され、printfを使って表示することができます。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
No.1を書いたものです。 参考ページのほうではその現在位置をファイルなどの頭に戻す 関数の解説が書かれています。 rewindという関数なのですが、今回はrewind(stream)というように 使えるはずです。 というのはfopenしたstream(おそらくFILE *streamなどと宣言しているでしょう) に現在位置が記録されているんです。 なので、fgetsなどにファイルポインタstreamが必要なんです。 どこから読み出すのか知りたいですからね。 説明へたでわかりにくくて申し訳ありません。
その他の回答 (3)
- chukenkenkou
- ベストアンサー率43% (833/1926)
電子ファイルでなく、マークシート(OMR)やOCRを考えると分かりやすいかも知れません。 カード読み取り機でカードを読み込むと、読み込み済みのものはどんどん排出されて行きます。入力口には、これから入力するもののみ残っています。 この読み込み動作を行わせる命令が、C言語の場合は、fgetsになります。
お礼
ありがとうございます。 実際に置き換えて考えると理解し易いんですね
- yakou850
- ベストアンサー率49% (25/51)
まずfgets(line,100,stream)というのは ファイルポインタstreamの現在位置から改行文字までか 100文字分を受け取りlineにいれます。 100文字以上が1行に入っていると同じ行をつづけて読みます。 こういったように「どこまでは読んだ」という記録が残っていて 読み込みを繰り返すたびに位置がずれて、行数をずらしているものです。 あまり説明がうまくないのでわかりにくかったら申し訳ありません。
補足
一行ずつが強く残っていて、文字制限の事を失念してました。 なぜ続きから始まるのかは、ご説明で理解できたのですが、「どこまで読んだ」という記録はどこに保持されているのでしょう?
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
前の続きから読み込むからです。
お礼
大変わかり易い説明ありがとうございました。 まさにファイルポインタはポインタなんですね。 今までは実感がなかったんですがファイルポインタの価値までわかってとてもすっきりしました。 使い方を理解しただけで理解しているような気になっているものが多いなと勉強不足を感じました。 また質問することもあると思いますが、見かけられましたら、ご教授ください。