コード:
#include <stdio.h>
int main(void)
{
char choices;
while(1) /*無限ループ*/
{
printf("選択肢です。AかBのどちらかを入力してください\n");
scanf("%c", &choices);
if(choices=='A' || choices=='B') break; /*ループを抜ける*/
printf("入力された文字はAまたはBではありません。\n");
}
if(choices=='A')
{
printf("選択されたのはAです。\n");
}
else if(choices=='B')
{
printf("選択されたのはBです。\n");
}
return 0;
}
基本テクニックとしてはこんな感じで書くのですが
エンターキーも認識してしまうので違う文字を入れた場合
入力した文字数も含めて複数回文字が表示されてしまいます。
また例えばCAと入力した場合、Aと認識してしまいます。
これを回避する方法は面倒なので
(何か良い方法があるのかもしれませんが)
getch関数を使ってみます。
この関数はエンターキーを押す必要がありません。
コード:
#include <stdio.h>
#include <conio.h>
int main(void)
{
int choices;
while(1) /*無限ループ*/
{
printf("選択肢です。AかBのどちらかを入力してください\n");
choices=getch(); /*入力*/
putch(choices); /*入力した文字の表示*/
putchar('\n'); /*改行*/
if(choices=='A' || choices=='B') break; /*ループを抜ける*/
printf("入力された文字はAまたはBではありません。\n");
}
if(choices=='A')
{
printf("選択されたのはAです。\n");
}
else if(choices=='B')
{
printf("選択されたのはBです。\n");
}
return 0;
}
ただしVisual C++などは問題ありませんが、Linuxなどは違う書き方をする必要があります。
あとmain()ではなくint main(void)と書くようにしたほうが良いです。
またifなどの{}のインデントが変?です。私の書き方が一般的と思います。
nonさんはまた違うアプローチでやろうとしているのかもしれませんので私のやり方は参考程度に。