Почему 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){

Сколько раз вызвал, столько и просит.

→ Ссылка