¿Cómo validar los datos de entrada en C?

3 posts / 0 nuevo(s)
Ir al último post
Imagen de Eagleheart
Eagleheart
Desconectado
Poblador desde: 26/01/2009
Puntos: 291

Yo no tengo casi nada de experiencia programando, así que cualquier burrada que diga, perdonarla.

Bueno, por ejemplo, tengo una variable de tipo int llamada edad, y uso el famoso scanf para que el usuario escriba el valor para edad.

¿Cómo puedo hacer que el usuario no escriba "pablito" donde únicamente deben ir números? ¿De qué forma puedo validar los caracteres de entrada?

De antemano, muchas gracias.

Salu2

No creo que sea agradable que te coma un tiburón... pero bien me puedo equivocar.

Imagen de BatchDrake
BatchDrake (no verificado)

Las funciones de la familia scanf (scanf, fscanf, sscanf y todas las demás) devuelven un entero con el número de variables leídas. Yo aconsejo leer una cadena con fgets y aplicar luego sscanf para evitar chapucear con el búfer del teclado.

Ejemplo práctico:

int edad;
char buffer[100];

printf ("Introduce edad: ");
fgets (buffer, 100, stdin); /* Nota: Comprobar EOF */

if (sscanf (buffer, "%i", &edad) < 1) /* Esperamos leer una variable. Si leemos menos... meeec */
{
    fprintf (stderr, "Edad incorrecta\n");
    exit (1);
}

/* Cosas */

Para todo lo demás, te aconsejo que leas la página de scanf en el manual: man 3 scanf

Imagen de Eagleheart
Eagleheart
Desconectado
Poblador desde: 26/01/2009
Puntos: 291

Muchas gracias. No conocía esa función, fgets.

Ya me leeré la página en el manual.

Salu2

No creo que sea agradable que te coma un tiburón... pero bien me puedo equivocar.

 OcioZero · Condiciones de uso