[C con Clase] Detectar errores con scanf

Programante programante en gmail.com
Dom Mar 4 16:17:12 CET 2007


David Romero Escalona escribió:
> El problema es que si introduzco algún valor erróneo, todas las veces que se 
> llama a scanf depués no me dejan introducir otro valor sino que scanf 
> directamente no lee nada.
> ¿alguien sabe porqué ocurre ésto?
>   
scanf() lee los datos de un buffer de entrada. En el momento en que lo 
que hay no se corresponde con lo que intenta leer, falla. Pero descarta 
los datos del buffer no leidos. Puede que si a continuación le pidieras 
leer una cadena funcionase.
Lo que debes hacer es vaciar el buffer de entrada antes de pedirle leer 
de nuevo. Esto lo haces con fflush(stdin) en Windows y
 fpurge(stdin) en Linux (incluye <stdio_ext.h>).





Más información sobre la lista de distribución Cconclase