2016-11-07 4 views
0

の値を示しなければならない場合:10の10進値を記憶し、それは27

#include <stdio.h> 
#include <stdlib.h> 

void main() 
{ 
    int ESC; 
    ESC = getchar(); 
    printf("\n%d", ESC); 
} 

それは「10」の値が、ASCIIテーブルを印刷します「27」の値を持つべきだと述べている。私もscanfを使ってこれを試しましたが、同じ結果が得られました。何が起こっている?

+3

ESCは 'getchar()'によって読み込まれていません。あなたが見ているのは、ESCを押した後にRETURNを押したときの改行です。 –

+0

ああ、どうすれば 'ESC'文字を読むことができますか? –

+1

'ESC'の型は' getchar() 'が' int'を返すので 'int'でなければなりません。 'ESC'を押して、Enterキーを押します。それは 'ESC'が 'Return'の前に読まれることを保証するはずです。 – usr

答えて

0

ライブラリ#include <conio.h>を使用して、getch()機能を使用すると、完全に機能することがわかりました。

#include <stdio.h> 
#include <conio.h> 

void main() 
{ 
    int ESC; 
    ESC = getch(); 
    printf("%d", ESC); 
} 
+0

WindowsとMSVCでは、元のプログラムは' Esc'が入力されたときに '10'を返します。 'Ctrl + [' 'これは等価でなければなりません。期待される' 27'を出力します。だから私の推測では、* get *のMS manページには何もないが、* key *はその結果の値ではなく無視されている。 –

+0

'conio.h 'は使用しないでください。これは、BorlandのDOS用コンパイラのような非常に古いコンパイラの非標準ヘッダーです。 20年後に廃止されたコンパイラの非標準機能を学ぶことは、特に有用ではありません。 – DUman