Hola! una solucion posible podria ser tomar lo que retorna scanf y validarlo.
La funcion scanf retorna el número de datos de entrada asignados y si hubo algun error en la asignacion retorna cero, ej:
Código C:
Ver originaldo {
printf("Ingrese un numero\n"); c
=scanf("%d",&opcion
); // si se ingresa un caracter, scanf retorna cero }while(c>0);
Saludos