Вызовите fflush(stdin);
после scanf
, чтобы удалить все ненужные символы (например, \ r \ n) из входного буфера, оставленные scanf
.
Редактировать: Как отметили ребята в комментариях fflush
решение может иметь проблему переносимости, поэтому вот мое второе предложение. Ни в коем случае не используйте scanf
и выполняйте эту работу, используя комбинацию fgets
и sscanf
. Это гораздо более безопасный и простой подход, потому что позволяет обрабатывать неправильные ситуации ввода.
int x,y;
char c;
char buffer[80];
printf("x:\n");
if (NULL == fgets(buffer, 80, stdin) || 1 != sscanf(buffer, "%d", &x))
{
printf("wrong input");
}
printf("y:\n");
if (NULL == fgets(buffer, 80, stdin) || 1 != sscanf(buffer, "%d", &y))
{
printf("wrong input");
}
c = getchar();