認識されません。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
らいてゅぅ

認識されません。

#1

投稿記事 by らいてゅぅ » 13年前

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;
	}
}

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: 認識されません。

#2

投稿記事 by みけCAT » 13年前

scanfは改行を読み飛ばすので、Enterキーだけでは終了しません。

コード:

    while(enter=10)
    {
        return 0;
    }
この怪しいコードはなんですか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

夕月

Re: 認識されません。

#3

投稿記事 by 夕月 » 13年前

すこし方法違うけど

コード:

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

コード:

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

beatle
記事: 1281
登録日時: 14年前
住所: 埼玉
連絡を取る:

Re: 認識されません。

#4

投稿記事 by beatle » 13年前

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

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: 認識されません。

#5

投稿記事 by みけCAT » 13年前

beatle さんが書きました:getcharが標準ライブラリの関数を指しているとすると、エンターを入力するまで待機するはずですが。
これはコンソールから入力する場合のみですね。
リダイレクトでファイルから入力しているときは、呼び出されるたび次の文字の値が帰るはずです。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

閉鎖

“C言語何でも質問掲示板” へ戻る