#include <stdio.h>
int main(void)
{
char ch;
int end=0;
printf("\nPick a letter a through f. (f ends the program)");
do
{
scanf("%c", &ch);
switch (ch) {
case 'a':
printf("a. another: ");
break;
case 'b':
printf("b. another: ");
break;
case 'c':
printf("c: another ");
break;
case 'd':
printf("d. another: ");
break;
case 'e':
printf("e. another: ");
break;
case 'f':
printf("f. Goodbye. ");
end=1;
break;
default:
printf("That wasn't a through f. ");
break;
}
} while (end == 0);
return 0;
}
だから、それは言うだろう:私のswitch文が大文字と小文字を出力するのはなぜですか?あなたが入力した場合
a. another: That wasn't a through f.
をあなたはグラムを言って入力した場合、それは言うだろう:
That wasn't a through f. That wasn't a through f.
あなたはfを入力した場合、予想通り、それは
を行いますf. Goodbye.
プログラムが終了します。
これを修正する方法についてのヒントを教えてください。私はしばらくそれを探してみました。私はC言語ではなく、あなたが休憩を忘れていると答えています。ステートメント。私はC言語に新しいので、多分それは私が気づいていない明らかな何か、私はまた、それはdo whileループの何かのためかもしれないと思った?あなたの時間ありがとう
問題は、 'scanf("%c "、&ch);'それにスペースを入れて修正する: 'scanf("%c "、&ch); ' – artm
フォーマット指定子に空白文字を含まないscanfは、空白文字を他の文字と異なる方法で扱いません。 'a'のループを1回実行してから改行のために再度実行します – Tibrogargan
scanfの説明をありがとうございます。私はそのように働いているのか分からなかった。 case '\ n':ブレーク;とscanf( "%c"、&ch);はどちらも同じように動作します – jonnyboy1555