2011-10-23 5 views
0

scanfのような関数を使用するときは、キーボードからの(通常)データが格納されているバッファからバイトを読み込みます。このデータはどのように保存されますか?それは固定サイズのベクトルの内部に格納されていますか?コードから直接アクセスする方法はありますか?stdinバッファはどのように機能しますか?

答えて

3

標準ライブラリの入力ルーチンで使用されるバッファは、標準ライブラリの実装専用です。標準ライブラリへの公開されたインターフェイス以外ではアクセスできません。

2

setvbuf()関数を使用すると、stdioストリームのバッファリングのタイプを再設定し、バッファを割り当て済みのものに置き換えることができます。つまり、Cライブラリの背後にあるバッファにアクセスする必要はありませんが、ストリームのバッファなし、ラインバッファ、完全バッファのいずれのサイズでも制御できます。

1

バッファを直接読み取ることはできません。あなたができることは、タイプされているときにキーストロークを直接読むことで、あなた自身のscanf()を書くことができます。キーストロークを読み取るコードを表示するには、このページの「kbhit.c」を検索してください。http://pwilson.net/sample.html

関連する問題