jueves, diciembre 18, 2008

scanf()

Uso: Captura información de teclado en variables

Estructura: scanf("%Tipo de Modificador",&Variable). El Tipo de Modificador y la Variable deben hacer referencia al mismo tipo de dato (si por ejemplo defino una variable tipo int, su modificador tendrá que ser %i.). Los Tipos de Modificador pueden ser:

Portabilidad: ANSI C/C++

Ejemplo:

#include <stdio.h>
#include <stdlib.h>
int main()
{
char let;
int num1, num2;
float pun;
printf("Ingrese una letra: ");
scanf("%c",&let);
printf("Ingrese un número entero: ");
scanf("%i",&num1);
printf("Ingrese un segundo numero entero: ");
scanf("%i",&num2);
printf("Ingrese un número con punto flotante: ");
scanf("%f",&pun);
printf("Ingresó la %c y los numeros %i, %i y %f\n",let,num1,num2,pun);
system("pause");
return 0;
}

Ahora bien, este programa podemos hacerlo un poco más corto de la siguiente forma:
#include <stdlib.h>
int main()
{
char let;
int num1, num2;
float pun;
printf("Ingrese 1 letra, 2 números enteros y 1 con punto flotante: ");
scanf("%c %i %i %f",&let,&num1,&num2,&pun); // Linea a considerar
printf("Ingresó la %c y los numeros %i, %i y %f\n",let,num1,num2,pun);
system("pause");
return 0;
}

En la línea a considerar podemos ver que estamos capturando varios valores bajo la misma instrucción pero bajo la condición de que los números ingresados se separen por un espacio

Adicionalmente, hay que enfatizar que el comando scanf() comprueba el tipo de dato de las variables con los respectivos modificadores ingresados. Si estos no tienen concordancia se generarán errores.

Otro uso del comando scanf() corresponde al manejo de cadenas de caracteres: Para el caso manejamos el modificador %s. Hay que aclararse que scanf() no nos permite ingresar cadenas de caracteres con espacios intermedios debido a que cada espacio lo asume como una separación entre variables. Veamos un ejemplo:
#include <stdlib.h>
int main ()
{
char a[25];
printf("Ingresa tu nombre: ");
scanf("%24s",a); // Linea a considerar
printf("Tu nombre es: %s\n",a);
system("pause");
return 0;
}

En este programa notamos que el nombre de la variable no viene acompañado del signo &. A primera vista podrìa pensarse que se está incurriendo en un error pero no es así ya que al decir (a) equivale a escribir (&a[0]).

El otro detalle que observamos es el número 24 entre el %s. Lo que queremos decir con esta cifra es que esa es la máxima cantidad de caracteres que esperemos se ingresen (uno menos que el tamaño del arreglo). Si se intenta ingresar más de 24 sencillamente no los almacenará. Esta es una buena costumbre cada vez que se utiliza scanf() para capturar cadenas.

No hay comentarios.: