2017-04-09 10 views
0

私はCの新人ですので、私はライブラリの機能をもっと使いたいと思っていました。私がgetch()を使って手をつけ始めたとき、私の人生はそれを働かせることができませんでした。起こったことは、キャラクターがコンソールにエコーバックされ、複数回入力することができ、プログラム全体で継続しなくてもenterを押すこともできたということでした。ここに私が作った小さなテストコードがあります。私がどこに間違っているのか?Getchはちょうど私のために働くことを拒否します

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



int main(){ 
    char i = '9'; 
    i = getch(); 
    printf("%c", i); 

} 

編集:私は、私が何を望むかについて、より明確になっていたかもしれないが、あなたの答えありがとうございました。 getch()をfgets()とほぼ同じように使用したいのですが、エコーを鳴らさないようにしたいと思います。 getchはこれを行うための間違ったツールですか?

+1

(HTTP [コンソールにキー入力イベントを取得する方法]あなたの目標...の – yakobom

+0

可能性のある重複したものを実際に明確ではありません/stackoverflow.com/questions/14973046/how-to-get-keypress-event-in-console) –

+0

'ncurses'ライブラリを調べるとよいでしょう。 –

答えて

1

変更この

i = getch(); 

i = getchar(); 

getchar()に標準入力から文字を取得し、標準的な機能です。

getch()は非標準です。これはキーボードから文字を取得し(stdinと異なる場合があります)、それをエコーし​​ません。

+2

非標準*および*非移植性(存在することが保証されていないことを意味します、希望の動作を再現するだけではないことを意味します)、すべての場合と同様に、 ''。 'getchar'が' int'を返し、 'printf("%c "、i);' if(i!= EOF){putchar(i);}に 'char i'を' int i'に変更します。 } '' EOF'を処理し、エラーを正しく読み込みます。 – Sebivor

+0

yup..thats正しい – Arvindsinc2

1

getch()は、conioヘッダファイルを持つウィンドウで使用されるmain関数を終了または終了するために使用される関数です。 stdlibヘッダ機能を使用しないので、文字列 を関数として使用します。 %cは文字の印刷に使用されます。 uは以下の言及と同じように行くよりも、私を印刷したい場合: - :/

#include <stdio.h> 
#include <conio.h> 
void main() 
{ 
int i = 9; 
printf("%d", i); 
getch(); 
}