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
|
| c | Lee un carácter simple |
| d | Lee un entero decimal |
| i | Lee un entero decimal, octal o hexadecimal |
| e | Lee un número en punto flotante |
| f | Lee un número en punto flotante |
| g | Usa %e o %f, el más corto en long. |
| o | Lee un entero octal corto |
| s | Lee una cadena de caracteres |
| u | Lee un entero decimal sin signo |
| x | Lee un entero hexadecimal |
| [...] | Lee una cadena de caracteres con caracteres de espaciado |
| p | Lee 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:
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
Publicar un comentario