Programación en C. Cómo evitar problemas al guardar valores con scanf().

Muchas veces os habrá pasado que al encadenar dos o más  scanf para guardar algo en  variables os da problemas…
Lo mas común es que el primer scanf funcione pero el segundo ni siquiera tengáis oportunidad de escribirlo ya que se guardará un valor no deseado.Esto se debe a que al pulsar INTRO, el retorno de carro ( \n )se guarda también, y ese es el valor que recibe el segundo scanf.
Para solucionar esto se puede poner antes del segundo scanf :
fflush( stdin ); Esto limpiará el buffer (lugar donde se queda almacenado nuestro \n).
Pero existe una solución mucho mas fácil y es la siguiente: %*c
Si queremos pedir dos números y guardarlos:
int main(int argc, char** argv)
{
int numero1, numero2;
printf («Introduce el primer numero\n»);
scanf («%d%*c»,&numero1); //Guardará el número y con %*c descartará el carácter \n.
printf («Introduce el segundo numero\n»);
scanf («%d%*c»,&numero2); //Guardará el número y con %*c descartará el carácter \n.
return (EXIT_SUCCESS);
}
Me parece bastante útil y sencillo de implementar.
Espero que os sea de ayuda, un saludo!