[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