getchar()とgetch()の判別

941 ワード

getcharにはint型の戻り値があり、プログラムがgetcharを呼び出すと、プログラムはユーザのボタンを待っており、ユーザがリターンを押すまでユーザが入力した文字はキーボードバッファに格納される(リターン文字もバッファに格納される).ユーザーが車に戻ると、getcharはstdinストリームから1文字ずつ読み込みを開始します.getchar関数の戻り値は、エラーが-1を返し、ユーザーが入力した文字を画面に表示するなど、ユーザーが入力した最初の文字のASCIIコードです.ユーザーが車を押す前に1文字以上入力した場合、他の文字はキーボードキャッシュ領域に保持され、後続のgetchar呼び出しの読み取りを待っています.すなわち、後続のgetchar呼び出しは、ユーザキーを待つことなく、バッファ内の文字を直接読み出し、バッファ内の文字が読み終わるまでユーザキーを待つ.
 
getchはgetcharの基本機能と同じで、違いはgetchが直接キーボードからキー値を取得し、ユーザーが車に戻るのを待たずに、ユーザーがキーを押すと、getchはすぐに戻り、getchの戻り値はユーザーが入力したASCIIコードで、エラーは-1に戻ります.入力した文字は画面に表示されません.getch関数はプログラムデバッグでよく使用され、デバッグ時にキー位置に関連する結果が表示され、getch関数でプログラムの実行を一時停止し、任意のキーを押した後もプログラムが実行されます.getch()は非バッファ入力関数であり、以下のC++プログラムのようなバッファがすでに存在する文字をgetch()で受け入れることはできません.
 
int i;
	while(cin>>i)
		cin.clear();
	getchar();

実行時に1 2 3 aを入力する場合はgetchar()を使用しなければ、後でプログラムで正常な入力を得ることができません.以前にストリームが復元されていても、ここでgetch()を使用するのは絶対にだめです.