Geek Electrónica

Explicaciones, tutoriales y noticias sobre electrónica y tecnología en general

C++Programación

ENTRADA Y SALIDA DE DATOS EN C++ (printf y scanf)

 

En la publicación anterior, se explicaron las instrucciones cin y cout como métodos para la entrada y salida de datos en C++. Sin embargo, quedó haciendo falta explicar las instrucciones scanf y printf que también pueden ser utilizadas para llevar a cabo estos mismos procesos. 

Por lo tanto, a continuación vamos a explicar cómo hacer uso de estas dos instrucciones ya que el uso de ellas, difiere un poco de las ya explicadas anteriormente. 

Las instrucciones scanf y printf son las instrucciones estándar de entrada y salida de datos del lenguaje C. Para poder hacer uso de ellas, lo primero que se debe hacer es incluir la librería stdio.h. 

 

 

Luego de esto, debemos tener en cuenta que tanto para el uso de printf como de scanf, es necesario indicar el tipo de la variable en la que se va a guardar el dato ingresado o de la que se quiere imprimir el valor en pantalla. Por lo tanto, es necesario tener en cuenta los siguientes formatos para el uso de estas instrucciones: 

 

código 

Descripción del formato 

%c 

Dato de tipo char (Carácter) 

%d 

Número entero con signo en notación base decimal 

%i 

Número entero con signo 

%e 

Número real en notación científica, indicando el exponente con una “e” 

%E 

Número real en notación científica, indicando el exponente con una “E” 

%f 

Número en punto flotante 

%o 

Número entero sin signo en notación base octal 

%s 

Dato tipo cadena de caracteres 

%u 

Número entero sin signo 

%x 

Numero entero sin signo en notación base Hexadecimal (Minúsculas para dígitos extendidos) 

%X 

Numero entero sin signo en notación base Hexadecimal (Mayúsculas para dígitos extendidos) 

%p 

Dato de un puntero 

 

Uso instrucción printf: 

 

Para imprimir en pantalla por medio de esta instrucción, si se quiere escribir un mensaje simple, tan solo es necesario escribir la instrucción printf() y dentro del paréntesis escribir entre comillas el mensaje que se quiere mostrar. Por ejemplo: 

printf(“HOLA – Geek Electronica”); 

En la línea anterior se estaría imprimiendo en pantalla el mensaje: Hola – Geek Electronica  

¿Pero, si queremos imprimir el valor guardado en una variable?, para este el caso, además de utilizar la instrucción printf(), dentro de los paréntesis se debe colocar el formato del tipo de dato de la variable que se quiere imprimir (entre comillas) y luego separado por una coma, se coloca el nombre de la variable a la que se le quiere imprimir el valor guardado. 

Por ejemplo, si tenemos una variable de tipo int de nombre edad y queremos imprimir el valor guardado en esa variable, la instrucción nos quedará de la siguiente forma: 

printf(“%d”,edad); 

Con la instrucción de la línea anterior, lo que se indica es que se va a imprimir un dato de tipo entero con signo “%d”, luego se indica el nombre de la variable en donde está alojado el dato que se quiere imprimir, en este caso la variable edad. 

 

Concatenar impresiones con printf: 

 

Al igual que con la instrucción cout, con la instrucción printf, también es posible realizar impresiones de distintos tipos de datos en una sola instrucción de impresión, para este caso es necesario colocar el formato del tipo de dato en la posición del texto en el que queremos que se imprima el valor y luego relacionar los nombres de las variables en el estricto orden que se indicaron los formatos de datos. 

Por ejemplo, si tenemos dos variables una de tipo int que se llama edad y una de tipo float que se llama estatura y queremos que las dos aparezcan en una misma impresión, con textos informativos en medio de ellas, la línea de programación que escribiríamos, debería ser algo así como la siguiente: 

printf(“Mi edad es %d y mi estatura es %f”,edad,estatura); 

En el caso de la línea anterior lo que se imprime paso a paso es lo siguiente: 

  1. Imprime el texto “Mi edad es ” 
  2. Encuentra un formato %d lo que indica que debe imprimir un numero entero. Por lo tanto, busca la primera variable que está relacionada después de las comillas, la cual es la variable edad y como es del mismo tipo del formato %d entonces, imprime el valor almacenado en esa variable. 
  3. Imprime el texto “ y mi estatura es “ 
  4. Encuentra un formato %f lo que indica que debe imprimir un numero tipo float. Por lo tanto, busca la siguiente variable relacionada después de las comillas, la cual es la variable estatura y como es del tipo del formato %f entonces, imprime el valor almacenado en esa variable. 

Veamos el siguiente código, para observar un problema que tenemos si dejamos la impresión tal cual como la tenemos hasta el momento. 

 

Ejemplo de salida de datos con printf

 

Al ejecutar el código anterior, tenemos como resultado lo siguiente: 

 

resultado de salida de datos con printf

 

Como podemos observar, en la impresión que se hace del dato guardado en la variable estatura, aparecen cuatro ceros de más, esto es el resultante de la configuración por defecto que con el que viene el formato %f. Sin embargo, si queremos ajustar el número de decimales que se quieren mostrar en la impresión, es posible hacerlo agregando un punto y la cantidad de decimales antes de la letra f. 

En este caso en específico que tan solo queremos mostrar dos decimales, entonces nuestro formato nos debería quedar como %.2f. 

Y haciendo este simple cambio, el resultado que obtendremos ya será el siguiente: 

 

 

Uso instrucción scanf: 

 

Para recibir un dato con la instrucción scanf(), es necesario primero colocar entre comillas el formato del tipo de dato que se va a recibir, esto se realiza antes de indicar el nombre de la variable en la que se quiere guardar dato recibido y aunque suene obvio, tanto el formato como el tipo de la variable en la que se quiere guardar el dato deben coincidir. Además, si el dato no se va a guardar en un puntero (más adelante explicaremos que son los punteros), sino que se va a guardar en una variable regular, entonces al nombre de la variable se le debe anteponer el operador & 

Volviendo al ejemplo de la variable edad que es de tipo entero, si en ella queremos guardar un dato ingresado por el usuario, la línea de código que deberíamos escribir es la siguiente: 

scanf(“%d”,&edad); 

De esta forma con el formato %d se le indica al sistema que se va a recibir un dato de tipo entero y que este va a ser guardado en la variable edad. 

 

Por último, a manera netamente personal. Recomiendo que, si van a programar en lenguaje C++, utilicen para el ingreso y salida de datos las instrucciones cin y cout, no solamente porque son las estándar de este lenguaje de programación, sino porque además facilitan mucho más el proceso de captura y entrega de datos. printf scanf son los estándares para el lenguaje C y fueron construidas para este lenguaje. ¿Por qué no usar lo que fue construido para cada cual? (A menos que para el programa que se encuentren desarrollando no tengan otra opción). 

 

ANTERIOR PUBLICACIÓN SOBRE PROGRAMACIÓN EN C++: Entrada y salida de datos en C++ (cin y cout)

SIGUIENTE PUBLICACIÓN SOBRE PROGRAMACIÓN EN C++: Condicionales en C++

 

 

Iván Cuadros Acosta

Licenciado en Electrónica y Master en desarrollo de aplicaciones móviles con experiencia en docencia universitaria. Apasionado por la electrónica y la programación.