の値を示しなければならない場合:10の10進値を記憶し、それは27
#include <stdio.h>
#include <stdlib.h>
void main()
{
int ESC;
ESC = getchar();
printf("\n%d", ESC);
}
それは「10」の値が、ASCIIテーブルを印刷します「27」の値を持つべきだと述べている。私もscanfを使ってこれを試しましたが、同じ結果が得られました。何が起こっている?
の値を示しなければならない場合:10の10進値を記憶し、それは27
#include <stdio.h>
#include <stdlib.h>
void main()
{
int ESC;
ESC = getchar();
printf("\n%d", ESC);
}
それは「10」の値が、ASCIIテーブルを印刷します「27」の値を持つべきだと述べている。私もscanfを使ってこれを試しましたが、同じ結果が得られました。何が起こっている?
ライブラリ#include <conio.h>
を使用して、getch()
機能を使用すると、完全に機能することがわかりました。
#include <stdio.h>
#include <conio.h>
void main()
{
int ESC;
ESC = getch();
printf("%d", ESC);
}
WindowsとMSVCでは、元のプログラムは' Esc'が入力されたときに '10'を返します。 'Ctrl + [' 'これは等価でなければなりません。期待される' 27'を出力します。だから私の推測では、* get *のMS manページには何もないが、* key *はその結果の値ではなく無視されている。 –
'conio.h 'は使用しないでください。これは、BorlandのDOS用コンパイラのような非常に古いコンパイラの非標準ヘッダーです。 20年後に廃止されたコンパイラの非標準機能を学ぶことは、特に有用ではありません。 – DUman
ESCは 'getchar()'によって読み込まれていません。あなたが見ているのは、ESCを押した後にRETURNを押したときの改行です。 –
ああ、どうすれば 'ESC'文字を読むことができますか? –
'ESC'の型は' getchar() 'が' int'を返すので 'int'でなければなりません。 'ESC'を押して、Enterキーを押します。それは 'ESC'が 'Return'の前に読まれることを保証するはずです。 – usr