ページ 11

do while文について

Posted: 2021年5月23日(日) 11:16
by いとおかし
はじめて掲示板を使うので失礼があったらすみません。

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


Re: do while文について

Posted: 2021年5月23日(日) 23:56
by みけCAT
scanfに空白文字(改行文字を含む)を無視してもらうため、%cの前に空白を入れるといいでしょう。

コード:

scanf(" %c", &input);