目次
1. ¿Qué es la función scanf
?
Al aprender C, una de las formas más comunes de introducir datos en un programa es mediante la función scanf
. Esta función actúa como un «oyente» del programa, ya que recibe los datos que el usuario introduce y los almacena en las variables especificadas.Sintaxis básica de scanf
scanf("especificador de formato", &variable);
Lo importante aquí son el «especificador de formato» y el &
que se coloca delante de la variable. El especificador de formato indica el tipo de dato que se espera, mientras que &
señala la dirección de memoria de la variable. Siguiendo esta simple regla, scanf
puede procesar correctamente la entrada del usuario. Por ejemplo, para leer un número entero:int num;
scanf("%d", &num);
De esta manera, se introduce un dato en el programa y se deja listo para su uso. En definitiva, scanf
es un aliado confiable para la entrada de datos en C.2. Especificadores de formato más usados
La gran ventaja descanf
es que permite trabajar con diferentes tipos de datos. Los especificadores de formato le indican al programa qué tipo de dato esperar. Veamos los más utilizados:Principales especificadores de formato
%d
: Para enteros.%f
: Para números de punto flotante tipofloat
.%lf
: Para números de punto flotante de doble precisión (double
).%s
: Para cadenas de caracteres (no reconoce espacios en blanco).%c
: Para un solo carácter.
double
:double val;
scanf("%lf", &val);
En este caso, %lf
indica que se trata de un número de doble precisión. Gracias a estos especificadores, scanf
puede manejar una amplia variedad de entradas.3. Procesar múltiples entradas a la vez
A veces es necesario leer varios valores de una sola vez, como la edad y la estatura de un usuario. Conscanf
se pueden usar varios especificadores de formato en la misma llamada:int age;
float height;
scanf("%d %f", &age, &height);
Así se leen ambos valores simultáneamente. Para mostrarlos:printf("Edad: %d, Estatura: %.2f", age, height);
¡De esta forma se resuelve fácilmente la entrada múltiple!
4. Validación de entrada y manejo de errores
No siempre los usuarios introducen datos válidos. Es necesario prever situaciones como «edad inválida» o números negativos. Aquí es donde entra la validación y el manejo de errores.Comprobar errores con el valor de retorno de scanf
scanf
devuelve la cantidad de datos leídos correctamente. Podemos usarlo para validar la entrada. Ejemplo:int age;
printf("Introduce tu edad (0–120): ");
if (scanf("%d", &age) == 1 && age >= 0 && age <= 120) {
printf("La edad introducida es %d años.\n", age);
} else {
printf("Edad inválida.\n");
}
Con esto comprobamos que la entrada tiene el formato correcto y que la edad está en un rango válido.5. Limpiar el flujo de entrada
Es común que queden caracteres residuales en el flujo de entrada (como el salto de línea al presionarEnter
). Esto puede afectar las siguientes lecturas. Para limpiar el buffer de entrada se puede usar:scanf("%*[^
]");
scanf("%*c");
Esto elimina los caracteres sobrantes y evita errores inesperados en la siguiente entrada.6. Errores comunes y buenas prácticas
Entre los errores más frecuentes al comenzar conscanf
están: usar el especificador equivocado (%s
en lugar de %d
) o olvidar el &
delante de la variable.Buenas prácticas
- Coincidencia entre especificador y tipo de dato:
%d
conint
,%f
confloat
, etc. - Cuidado con la longitud de cadenas: prevenir desbordamientos de buffer.
- Limpiar siempre el flujo de entrada: como se explicó antes.
7. Uso avanzado de scanf
scanf
también permite usos más avanzados, como leer directamente cadenas en arreglos de caracteres.Entrada de cadenas
char name[20];
printf("Introduce tu nombre: ");
scanf("%s", name);
printf("¡Hola, %s!", name);
Este programa simple solicita el nombre y luego muestra un saludo.Conclusión
La funciónscanf
en C es muy poderosa: permite manejar entradas de todo tipo si se usa correctamente. Recuerda: utiliza los especificadores adecuados, valida los datos y limpia el flujo de entrada. Siguiendo estas reglas, scanf
será una herramienta clave en tu aprendizaje y práctica de programación en C.