Почему scanf() просит ввести значение переменной 2 раза?
Делаю лабораторную работу, в которой требуется введение только целых чисел. Проверка на соответствие типов данных кое-как работает через while. Беда в том, что когда ввожу значение с точкой, программа говорит, что "ерунда, давай по новой" и делает это с первого раза, работает так, как и хотелось бы (ввела double - try again). Но, чтобы считалось целочисленное значение, приходиться его вводить по два раза (ввела int - enter - ввела int - enter и только тогда оно переходит к считыванию следующего элемента массива). Искала, пробовала всякие "очистители" буфера, но не заработало. Вот кусочек, который не пашет:
void Matrix_input(int **matrix, short lines_numb, short columns_numb)
{
for (short i = 0; i < lines_numb; i++)
{
for (short j = 0; j < columns_numb; j++)
{
printf("Element[%hd][%hd] = ", i, j);
scanf("%d", &matrix[i][j]);
while (scanf("%d", &matrix[i][j]) != 1){
fflush(stdin);
printf("Wrong type. We need only integer numbers. Try again\n");
}
}
}
}
Ответы (1 шт):
Автор решения: Qwertiy
→ Ссылка
scanf("%d", &matrix[i][j]); while (scanf("%d", &matrix[i][j]) != 1){
Сколько раз вызвал, столько и просит.