Эта программа, похоже, не принимает ввод на каждой итерации цикла while, когда в идеале она должна. Однако, когда я заменяю параметр% c функции scanf() на% d (т. е. целочисленный ввод, а не вход char), похоже, он просто работает абсолютно нормально, и этот вход принимается для каждой итерации цикла while. Почему я вижу это несоответствие?C: scanf() внутри цикла
int main()
{
char grade;
int i=0;
while(i<10){
printf("Enter ur grade\n");
scanf("%c", &grade);
switch(grade){
case 'A' : printf("U R THE BEST\n");
break;
case 'B' : printf("U R VERY GOOD DUDE...\n");
break;
case 'C' : printf("U R GOOD DUDE...\n");
break;
case 'D' : printf("U R Not good DUDE...\n");
break;
case 'E' : printf("U R WORST DUDE...\n");
break;
default : printf("U r AWESOME...\n");
break;
}
i++;
}
Можете привести пример ввода и вывода, который вы получаете? –
scanf не удаляет новую строку из входного буфера. много дубликатов на SO: http://stackoverflow.com/questions/13275417/why-scanfd-does-not-consume-n-while-scanfc-does (на самом деле не обманывать, а решать вашу проблему) –
Каждый раз, когда вы вводите char (вы фактически вводите два символа), во входном потоке остается символ новой строки ('\ n'), который потребляется на следующей итерации. Вам нужно очистить его с помощью 'getchar()' или аналогичных методов. –