Scanf

Fiabilidad

¿Qué significa scanf?

En el lenguaje de programación C, scanf es una función que lee datos formateados de stdin (es decir, el flujo de entrada estándar, que suele ser el teclado, a menos que se redirija) y luego escribe los resultados en los argumentos dados.

Esta función pertenece a una familia de funciones que tienen la misma funcionalidad pero sólo se diferencian en su fuente de datos. Por ejemplo, fscanf obtiene su entrada de un flujo de archivos, mientras que sscanf la obtiene de una cadena.

Definición de scanf

La función scanf tiene el siguiente prototipo/firma:

int scanf( const char *formato, ... );

donde:

  • int (entero) es el tipo de retorno
  • format es una cadena que contiene el/los especificador/es de tipo (ver más abajo)
  • «…» (elipsis) indica que la función acepta un número variable de argumentos; cada argumento debe ser una dirección de memoria en la que se escribe el resultado convertido.

Un especificador de tipo simple consiste en un símbolo de porcentaje (%) y un carácter alfa que indica el tipo. A continuación se muestran algunos ejemplos de los especificadores de tipo reconocidos por scanf:

  • %c – Carácter
  • %d – Número entero con signo
  • %x – Entero sin signo en formato hexadecimal
  • %f – Punto flotante
  • %s – Cadena

La función trabaja leyendo la entrada del flujo de entrada estándar y, a continuación, busca en el contenido de «formato» cualquier especificador de formato, intentando que ambos coincidan. Si tiene éxito, la función escribe el resultado en el argumento o argumentos pasados.

Por ejemplo, si la llamada a la función es:

scanf(«%c%d», &var1, &var2 );

y el usuario escribe «a1», la función escribirá «a» en «var1» y «1» en «var2». Sin embargo, si la llamada a la función es:

scanf(«%x», &var );

la misma entrada se leerá como el número hexadecimal «a1», que es 161 en decimal.

La función devuelve el siguiente valor:

  • >0 – El número de elementos convertidos y asignados correctamente.
  • 0 – No se ha asignado ningún elemento.
  • <0 – Se ha producido un error de lectura o se ha alcanzado el final del archivo (EOF) antes de realizar ninguna asignación.

Temas relacionados

Margaret Rouse
Technology expert
Margaret Rouse
Experta en tecnología

Margaret Rouse es una galardonada escritora técnica y profesora conocida por su habilidad para explicar temas técnicos complejos a una audiencia de negocios no técnica. Durante los últimos veinte años, sus explicaciones han aparecido en sitios web de TechTarget y ha sido citada como autoridad en artículos del New York Times, Time Magazine, USA Today, ZDNet, PC Magazine y Discovery Magazine. La idea de diversión de Margaret es ayudar a profesionales de TI y negocios a aprender a hablar los idiomas altamente especializados de cada uno. Si tienes una sugerencia para una nueva definición o cómo mejorar una explicación técnica,…