[C con Clase] Detectar errores con scanf
David Romero Escalona
solidsnakemgs9 en hotmail.com
Dom Mar 4 15:14:35 CET 2007
Hola,
Tengo un problema para detectar un error al leer de la entrada estándar con
la función scanf de la biblioteca estándar de C. Esta función devuelve el
número de items que ha podido leer satisfactoriamente de la entrada
estándar. Entonces, si quieres leer n items, puedes detectar que ha ocurrido
algún error si el número devuelto por la función es distinto de n.
En mi caso, cuando detecto el error, vuelvo a pedir al usuario que
introduzca el valor. Pero la segunda vez que se invoca scanf ésta no lee
bien de la entrada estándar y mi programa entra en un bucle infinito.
Mi programa es este:
#include <stdio.h>
int main ()
{
int n, i, nItems;
double suma;
do {
printf ("Escribe el valor de n: ");
nItems = scanf ("%d", &n);
printf ("Número de items: %d\n", nItems);
if (nItems != 1)
printf ("Error. El valor de n tiene que ser un entero\n\n");
}
while (nItems != 1);
suma = 0.0;
for (i = 1; i <= n; i++)
suma = suma + ((i * i + 1) / i);
printf ("La %d-ésima suma parcial es: %g\n", n, suma);
return 0;
}
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?
Muchas gracias.
_________________________________________________________________
Moda para esta temporada. Ponte al día de todas las tendencias.
http://www.msn.es/Mujer/moda/default.asp
Más información sobre la lista de distribución Cconclase