scanf ignorando, loop infinito

int flag = 0;
int price = 0;
while (flag==0)
{
    printf("\nEnter Product price: ");
    scanf("%d",&price);
    if (price==0) 
        printf("input not valid\n"); 
    else 
        flag=1;
}

Quando insiro um número válido, o loop termina conforme o esperado. Mas se eu inserir algo que não é um número, comohello, o código entra em um loop infinito. Continua a imprimirEnter Product price: einput not valid. Mas ele não espera que eu digite um novo número. Por que é que

questionAnswers(6)

yourAnswerToTheQuestion