do while文について

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

do while文について

#1

投稿記事 by いとおかし » 2年前

はじめて掲示板を使うので失礼があったらすみません。

do while文を用いて、cが入力されるまでprintf("1文字入力して下さい:");とscanf("%c",&input);が繰り返される処理を行いたいのですが、
c以外の文字を入力したときに「1文字入力して下さい:」が以下の実行結果のように、1つ余分に出てきてしまいます。
この余分に出てくるのを防ぎたいのですが、どのようにすればよいですか?

[実行結果]
1文字入力して下さい:a
1文字入力して下さい:1文字入力して下さい:c
cが入力されました

コード:


#include <stdio.h>

int main(void){
	 char input;

	do {
	 printf("1文字入力して下さい:");
 		scanf("%c", &input);
 	} while (input != 'c');
	 printf("cが入力されました\n");
 
	return 0;
}


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

Re: do while文について

#2

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

scanfに空白文字(改行文字を含む)を無視してもらうため、%cの前に空白を入れるといいでしょう。

コード:

scanf(" %c", &input);
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

返信

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