ページ 11

認識されません。

Posted: 2012年8月11日(土) 18:38
by らいてゅぅ
C言語を学習しているのですが、コマンドプロンプトを使ったプログラムでして、Enterキーを押してコマンドプロンプトを閉じるという簡単なプログラムを作成しているのですが、エンターキーを押しても改行されるだけでウィンドウが閉じません。
試しに「A」キーを入力で閉じるようにしてみると、見事閉じました。
どうしたらエンターキーを認識してくれますか?
ちなみに、環境はVC2010です。

コード:

#include<stdio.h>
#include<ctype.h>
#pragma warning(disable : 4996)
//キーコードの受付を行うので「ctype.h」を#includeする

int main(void)
{
	char enter;
	
	printf("Enterキーを押して下さい。\n");
	scanf("%d",&enter);

	while(enter=10)
	{
		return 0;
	}
}

Re: 認識されません。

Posted: 2012年8月11日(土) 18:54
by みけCAT
scanfは改行を読み飛ばすので、Enterキーだけでは終了しません。

コード:

    while(enter=10)
    {
        return 0;
    }
この怪しいコードはなんですか?

Re: 認識されません。

Posted: 2012年8月11日(土) 18:55
by 夕月
すこし方法違うけど

コード:

    scanf("%d",&enter);
    while(enter=10)
    {
        return 0;
    }
の部分を

コード:

while(true)
    {
		if( getchar() == '\n' )
	        return 0;
    }
getchar()は呼び出されるたび入力しているキーの値が帰ってきて
入力するまで待機しません。
なので、whileの中でまわしています。

Re: 認識されません。

Posted: 2012年8月12日(日) 08:04
by beatle
夕月 さんが書きました:getchar()は呼び出されるたび入力しているキーの値が帰ってきて
入力するまで待機しません。
これは何処に書いてある情報でしょうか?
getcharが標準ライブラリの関数を指しているとすると、エンターを入力するまで待機するはずですが。
参考 入出力関数 (getchar getch putchar putch)

Re: 認識されません。

Posted: 2012年8月12日(日) 08:39
by みけCAT
beatle さんが書きました:getcharが標準ライブラリの関数を指しているとすると、エンターを入力するまで待機するはずですが。
これはコンソールから入力する場合のみですね。
リダイレクトでファイルから入力しているときは、呼び出されるたび次の文字の値が帰るはずです。