scanf()

2009/07/12
Usted ya conoce las variables; sabe cómo declararlas, cómo asignarles valor y cómo utilizarlas; seguramente imagina cómo tratar algunos datos y, asimismo, mediante printf() darles salida. ¿Pero y la entrada de datos...? ¡Ajá!

scanf() es una función, aunque no la única, de entrada mediante teclado. Al tratarse de una función muy general, es posible leer distintos tipos de datos. Es equivalentemente lo contrario a printf(). ¿Qué significa? Que puede usted, mediante scanf() leer datos en vez de escribirlos en pantalla; es decir, darle un valor a una variable EN TIEMPO DE EJECUCIÓN.

Por ejemplo, un programa que sume dos números 1) le pedirá los datos de entrada -los números a sumar-, 2) los procesará, y 3) los mostrará.

¿Está listo para escribir eso? ¡Seguro!

Forma de scanf():
scanf("cadena(s) de control", lista de argumentos);

Al igual que printf(), scanf() emplea códigos de formato para asegurarse de que los datos introducidos son coherentes con el tipo de variable. La lista de argumentos correspondería a la(s) variable(s) en las que se guardarán los datos.

Códigos de control para scanf():
%c - lee un único caracter
%s - lee una cadena
%d - lee un entero decimal
%e - número en coma flotante
%f - número en coma flotante
%h - entero corto
%o - número octal
%x - número hexadecimal

Ejemplos:
/* lee un número entero */
scanf("%d", &var);

/* lee tres caracteres consecutivos y los almacena en 3 variables */
scanf("%c%c%c", &var1, &var2, &var3);

La razón por la que cada variable está acompañada de un ampersand es que las variables que reciben valores se pasan, a través de scanf(), por sus direcciones, creando una llamada por referencia. Es probable que ahora esto sea confuso. De todos modos es un tema que se tratará oportunamente: punteros. Sin embargo, es conveniente aclarar que cuando se trate de una cadena NO se empleará el ampersand, ya que una cadena al ser un array de caracteres, ya está pasando su dirección con el primer elemento del arreglo. Esto también será tratado en otro momento.

Programa que suma 2 números:


Versión poco elegante. Lo reto a mejorarla.



Nota: En C, los archivos de código fuente deben llevar la terminación punto c (.c). Recuerde que se trata de texto plano; por favor no piense en utilizar algo diferente a un editor de TEXTO PLANO.

Jugando con los operadores aritméticos, usted podría muy pronto tener escrita las funciones para una calculadora simple. Después, cuando conozca las estructuras de control, podrá hacer más robusto su programa. ¡No deje de practicar! ¡Escriba!

5 comentarios:

Anónimo dijo...

muy claroo!! gracias... viene joya para gente medio idiota y principiante como yooo

Anónimo dijo...

la veredad muy bueno, muy claro gracias

Foo fighter dijo...

Al contrario, gracias por comentar.

Carlos Cedillo dijo...

Muy buena entrada felicidades

Anónimo dijo...

hey y que pasa si el scanf no lee nada?

Publicar un comentario