0
私は文字入力関数をCで試しています。私は、getchとgetche関数の呼び出しを実験しているプログラムを実行しています。getcheは、Enterキーを押した後に画面を消去します。
#include <stdio.h>
#include <conio.h>
#define MAX_CHARS 255
int main(){
//getche experiments
char buffer[MAX_CHARS+1],ch;
int x = 0;
while(x<MAX_CHARS&&(ch=getch())!='\r'){//relacing getch here with getche
buffer[x++]=ch;
putchar(ch);
}
buffer[x]='\0';
printf("%s",buffer);
return 0;
}
- 私はgetchは(でプログラムを実行する)Iを押すと、私はすぐに私は、キーボード( のputcharのおかげで)を介してそれらを入力すると、印刷された各文字 、全体のラインを見ることが(printfのおかげで最後に のステートメント)。それは問題ありません。
- 私はgetcheをとgetchはを交換したとき、私は期待唯一の違いは、私が二回とすぐ、私は(getcheをがstdoutに文字をエコーするので)を入力し、最後の後で行 を印刷 として印刷入力した文字のそれぞれになるだろう ました私はenterを押します。しかし、全画面を入力するとすぐに がクリアされ、行が印刷されます。
最後に印刷する前に画面がクリアされるのはなぜですか?
は、私たちがgetche
のためのあなたのドキュメントは言うことを知らずに知るための方法はありません
'getch'と' getche'(そしてヘッダ自体)は標準ではないので、使用しているコンパイラと環境を指定する必要があります.Turbo Cのような古代のものと思われますか? –
@David Scwartz、@ Paul R - 私はWindows上でMicrosoft Visual Studio 8コンパイラを使用しています。xp 32ビットプラットフォーム – ZoomIn
OK - これを反映するようにタグを修正しました。コードをポータブルにしたい場合は、標準のライブラリ関数に従い、などの非標準の従来のAPIを避けることをお勧めします。 –