FUNCION SCANF

La función scanf.
Mediante la función scanf podemos introducir cualquier combinación de valores numéricos, caracteres sueltos y cadenas de caracteres a través del teclado. En definitiva, scanf lee datos formateados de la entrada estandar. Cuando hablamos de datos formateados, nos referimos a que los datos se pueden presentar en distintos formatos. La función devolverá el número de datos que se han introducido correctamente.

En general, una refencia a la función scanf se escribe: 

scanf (cadena de control, lista de argumentos);


en donde cadena de control hace referencia a una cadena de caracteres que contiene información sobre el formato de los datos (debe haber tantos códigos de formato como argumentos), y la lista de argumentosson argumentos que representan los datos.

En la cadena de control se incluyen grupos individuales de caracteres cada uno de los cuales deben comenzar por %. Normalmente, un grupo de caracteres estará formado por el signo de porcentaje seguido de un carácter de conversión que indica el tipo del dato correspondiente.
Dentro de la cadena de control se pueden encontrar varios caracteres seguidos o separados por espacios en blanco, tabuladores o caracteres de nueva linea (es muy frecuente el uso de caracteres en blanco para separar grupos de caracteres). El uso de caracteres de espaciado hace que scanf lea, pero no guarde, cualquier número de espacios en blanco hasta el primer carácter no blanco.
Veamos en una tabla los carácteres de conversión más frecuentes:

(recordar que delante de estos carácteres va siempre %) 
  

Carácter 
Significado
cLee un carácter simple
dLee un entero decimal 
iLee un entero decimal, octal o hexadecimal
eLee un número en punto flotante
fLee un número en punto flotante
gUsa %e o %f, el más corto en long.
oLee un entero octal corto
sLee una cadena de caracteres
uLee un entero decimal sin signo
xLee un entero hexadecimal 
[...]Lee una cadena de caracteres con caracteres de espaciado
pLee un puntero
NOTA: scanf tiene el carácter especial * que situado entre el % y el código, lee los datos del tipo especificado, pero elimina su asignación.

Los argumentos de scanf han de ser punteros que no son otra cosa que direcciones de memoria donde se encuentran los datos. Para obtener la direción de memoria de una variable, es necesario aplicarle el operador monario & de la forma: 

& variable


NOTA: Los nombres de arrays no deben ser precedidos por &.

Veamos una aplicación típica de la función scanf:



  

Por ahora es suficiente para aprender a utilizar la función scanf. Más adelante le dedicaremos una lección completa al tema de punteros.
Por último, añadir que los tipos de los argumentos deben coincidir con los indicados por los grupos de caracteres correspondientes en la cadena de control.

Comentarios