K.Maebashi's BBS

ご自由に書き込んでください。雑談も可。
テスト書き込みの類はテスト用掲示板にどうぞ

[日付順表示] [日付順インデックス] [スレッド順インデックス]

新規投稿 | 開設者ホームページへ戻る | ヘルプ

[1015] 体当たり学習について質問
投稿者:ちょいち
2007/08/16 02:47:02

はじめまして。ちょいちというC言語初心者です。 C言語体当たり学習徹底入門で勉強しています。 お世話になってます。 で、早速質問を・・・。 既出でしたら大変申し訳ないのですが、 p225のlist5-6やp227のlist5-8において、関数の引数に 『FILE *fp』があるのはなぜですか? よろしくお願いします。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1016] Re:体当たり学習について質問
投稿者:ちょいち
2007/08/16 02:56:05

すいません。 自分の文章が自分でも理解できなかったので 何が分からないかを言い直しますw えぇと、「FILE *fpを引数に渡しているのはなぜか」というよりも、 fgets(buf, 1024, stdin) と書いていたのを、なぜ急に fget(buf, 1024, fp) と変えたのですか?? ってことがわからないってことです・・・。 すんません。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1017] Re:体当たり学習について質問
投稿者:トル
2007/08/16 13:24:20

はじめまして。私は『C言語 体当たり学習徹底入門』はもってないんですが・・・ちょっとだけ。 fgetsの第三引数の型はFILE *で、入力先を指定します。 stdinは標準入力と結びついていますので、stdinを渡せば標準入力から入力します。 fpの方は、どこぞのファイルに結びついていますので、fpを渡せばそのファイルから入力します。 要するに、stdinをfpに変えたのは、読み込み先を変えたという事です。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1018] Re:体当たり学習について質問
投稿者:(ぱ)こと管理人
2007/08/16 22:04:45

ちょいちさん、はじめまして。 >fgets(buf, 1024, stdin) >と書いていたのを、なぜ急に >fget(buf, 1024, fp) >と変えたのですか?? もちろんこれはトルさんから回答があったように入力元を変えるためなのですが、 「なぜこのプログラムから?」というのが疑問であるわけですよね。 確かに説明不足だったかもしれません。 理由は、ここで作っている関数input_string()は、汎用の関数を目指している ためです。 このinput_string()は、扱える行の最大長に制限があるとはいえおおむね現実的な 入力においては、長さチェックを行って長すぎる場合にはエラーまで出してくれる、 という便利な関数です。実際、蔵書管理プログラムの中でもあちこちで使われて いますし、今後別のプログラムで使うこともあるかもしれません。 今後別のプログラムで使うことがあるのなら、入力元をstdinに限定して しまったのでは汎用性が薄れます。そこで、input_string()に引数として 入力元を渡せるようにしているわけです。 これで回答になっていますでしょうか?
[この投稿を含むスレッドを表示] [この投稿を削除]
[1026] Re:体当たり学習について質問
投稿者:ちょいち
2007/08/22 02:02:52

>トルさん、(ぱ)さん 返信遅くなってすみません。 大変分かりやすく説明していただき、ありがとうございました! よくわかりました。 「なぜこの関数から??」 →まさにこの疑問でした・・・。 本当にありがとうございました!!
[この投稿を含むスレッドを表示] [この投稿を削除]