#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. Goodbye.
и программа завершается.
Любые советы о том, как исправить это? Я пробовал найти его на некоторое время, и я получаю ответы не на C, или они говорят, что вы забываете перерыв; заявление. Я новичок в C, так что, возможно, это что-то очевидное, я не замечаю, я также подумал, что это может быть связано с чем-то вроде цикла while? Спасибо за ваше время
Проблема с 'scanf ("% c ", &ch);' Исправить, добавив в него пробел: 'scanf ("% c ", &ch); ' – artm
scanf без пробелов в спецификаторе формата не будет обрабатывать пробелы по-разному любому другому персонажу. Он выполняет цикл один раз для 'a', а затем снова для новой строки. – Tibrogargan
Благодарим вас за объяснение в scanf. Я понятия не имел, что это так. case '\ n': break; и scanf ("% c", &ch); обе работают одинаково – jonnyboy1555