【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※返信付き投稿の削除は禁止!
 ※マルチポスト(多重投稿)は慎んで!

 詳しくはこちら


本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.23458

scanf()と fflush()について
投稿者---あきき(2005/10/03 22:37:53)


単純な質問で申し訳ありませんが、fflush()関数をみていると、scanf()関数の入力元はキーボードでなくて、バッファーのような気がします。と言うより必ずしもキー入力を必要とはしないと言う意味です。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:scanf()と fflush()について 23459 RAPT 2005/10/03 22:48:06
<子記事> Re:scanf()と fflush()について 23460 RiSK 2005/10/03 23:51:31


No.23459

Re:scanf()と fflush()について
投稿者---RAPT(2005/10/03 22:48:06)


scanf()の入力元は、stdin です。

標準入力ストリームにデータ(例えばリダイレクトされたデータ)があれば
そこから入力されます。

標準入力ストリームにデータがなければ、標準入力(通常キーボード)
からの入力を待ちます。



この投稿にコメントする

削除パスワード

No.23460

Re:scanf()と fflush()について
投稿者---RiSK(2005/10/03 23:51:31)


>fflush()関数をみていると、scanf()関数の入力元はキーボードでなくて、バッファーのような気がします。と言うより必ずしもキー入力を必要とはしないと言う意味です。

そのバッファの事をストリームといいます。
scanfはstdinというストリームから入力します。
ストリームを指定できるのがfscanfですね。

おまけ。
stdinをfflushしちゃダメ。未定義動作。


この投稿にコメントする

削除パスワード

No.23461

Re:scanf()と fflush()について(ありがとうございます)
投稿者---あきき(2005/10/04 00:19:38)


RAPTさん、RiSKさんありがとうございます。

入力元の事ばかりか、朧なイメージだったストリームが分かりました。

>おまけ。
>stdinをfflushしちゃダメ。未定義動作。

stdinからname[11]に全角文字を入力して表示する時、入力6文字以上は無視するのには有効ではないでしょうか。

それ以外でしたら、RiSKさんの言う通りですね。



この投稿にコメントする

削除パスワード

No.23462

Re:scanf()と fflush()について(ありがとうございます)
投稿者---RAPT(2005/10/04 00:53:53)


>> stdinをfflushしちゃダメ。未定義動作。
> stdinからname[11]に全角文字を入力して表示する時、入力6文字以上は
> 無視するのには有効ではないでしょうか。

有効かどうか、といった問題ではなく、C言語において、fflush(stdin)
としたときの結果は、未定義 なのです。

VC++では、入力を除去してくれるとMSDNに記載されていますが、
仮に fflush(stdin) 実行時にハードディスクを初期化し始めるような
処理系があったとしても、文句は言えません。未定義動作 ですから。。



この投稿にコメントする

削除パスワード

No.23497

Re:scanf()と fflush()について(ありがとうございます)
投稿者---あきき(2005/10/05 00:25:23)


RAPTさんの言う、"未定義"の意味が分かりました。RAPTさんの言う事は全く気にも留めませんでした。

と言うのも"処理系により〜"の意味するところを後回しにしていましたから。



この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧