У меня есть этот блок кода (функции опущены, поскольку логика является частью домашнего задания):
#include <stdio.h>
int main()
{
char c = 'q';
int size;
printf("\nShape (l/s/t):");
scanf("%c",&c);
printf("Length:");
scanf("%d",&size);
while(c!='q')
{
switch(c)
{
case 'l': line(size); break;
case 's': square(size); break;
case 't': triangle(size); break;
}
printf("\nShape (l/s/t):");
scanf("%c",&c);
printf("\nLength:");
scanf("%d",&size);
}
return 0;
}
Первые два Scanf работают отлично, без проблем, когда мы попадаем в цикл while. У меня проблема, когда, когда вам предлагается ввести новую форму char, вместо этого она переходит в printf
длины и ждет ввода оттуда для char, а затем десятичного числа на следующей итерации цикла.
Итерация прелопа:
Scanf: Shape. Работает отлично Scanf: длина. Нет проблем
Петля 1.
Scanf: Shape. Пропуски через это Scanf: длина. Проблема, этот scanf отображает форму char.
Loop 2
Scanf: Shape. Пропуски через это
Scanf: длина. Проблема, этот scanf теперь сопоставляется с размером int.
Почему он это делает?