Bienvenidos sean a este post, hoy veremos otra forma de mostrar informacion.
Como mencionamos esta funcion tambien nos pemite mostrar informacion en pantalla como si fuera cout pero con la ventaja de poder formatearla a nuestra necesidad. Esta funcion es heredada de C pero no quita que muchas personas la sigan utilizando al dia de hoy. Cuando la veamos en accion, veremos porque es muy popular y si bien cuesta un poco adaptarse para sacarle todo el jugo, cuando se aprende no puede dejar de usarse. Primero veamos como es su sintaxis mas basica:
printf("texto","informacion");
El primer campo sera el texto que mostraremos en pantalla y el segundo sera la informacion que pasaremos al primero. Esta informacion sera insertada mediante unos especificadores, donde cada cual representara un tipo de dato para formatearlo de manera correcta. Antes de analizar el ejemplo, veamos algunos de los especificadores que podemos utilizar:
| Especificador | Descripcion |
| %s | Muestra valores de texto |
| %d | Muestra valores enteros (int) |
| %ld | Muestra valores enteros largos (long int) |
| %lf | Muestra valores doble (double) |
| %f | Muestra valores flotantes (float) |
Cada especificador se encargara de mostrar el valor que le pasemos de manera correspondiente a su tipo. Suena confuso pero no lo es tanto, para ello pasemos a ver el primer ejemplo:
#include <stdio.h>
int main()
{
int miInt = 200;
float miFloat = 123.45;
const char * miTexto = "tinchicus.com";
printf("%s","Hola, Mundo!\n");
printf("%s %d %f\n", miTexto, miInt, miFloat);
printf("%s\t%d\t%f\n", miTexto, miInt, miFloat);
return 0;
}
A diferencia de todos los codigos que vimos anteriormente en este no usaremos a iostream sino a stdio.h. Esto es asi porque printf se encuentra en esta libreria. Volviendo a nuestro codigo, primero definiremos tres variables de tres tipos distintos. Seguido a esto utilizaremos tres printf, siendo el primero para mostrar un literal de tipo string. En el segundo mostraremos a las variabes anteriormente definidas y en el tercer caso haremos lo mismo pero lo separaremos con el modificador de tabulacion. Compilemos y veamos como es la salida:
$ ./printf
Hola, Mundo!
tinchicus.com 200 123.449997
tinchicus.com 200 123.449997
$
Como pueden ver nos mostro cada uno de los mensajes en el formato que indicamos anteriormente. Esto es una forma muy basica de trabajar, tomemos el codigo y modifiquemoslo de la siguiente manera:
#include <stdio.h>
int main()
{
const char * texto = "Texto:";
const char * t1 = "Hola, Mundo";
const char * t2 = "tinchicus.com";
printf("%s %s\n%s %s\n",texto,t1,texto,t2);
return 0;
}
Este es un codigo muy similar pero que nos servira para ver una curiosidad. Primero definiremos tres variables con distintos textos. Donde el primero sera para usarlo como una etiqueta de cada uno de los siguientes textos. Al momento de pasarlos, repetimos el primero entre uno y otro. Tambien pasamos el modificador \n para aplicar el caracter de nueva linea. Compilemos y veamos como es su salida:
$ ./printf
Texto: Hola, Mundo
Texto: tinchicus.com
$
Observen como nos mostro todo lo indicado anteriormente. Un detalle que no comentamos es que todo lo que pasemos, tanto variables como literales y especificadores, en el argumento de la funcion se considera como parte de un array. Por lo tanto, cada uno tendra una posicion como un array y esto nos permite reutilizarlo, tomemos el codigo anterior y hagamos el siguiente cambio:
#include <stdio.h>
int main()
{
const char * texto = "Texto:";
const char * t1 = "Hola, Mundo";
const char * t2 = "tinchicus.com";
printf("%s %s\n%1$s %s\n",texto,t1,t2);
return 0;
}
En este caso, solo hicimos un solo cambio. En los especificadores pasamos uno identificado como:
%1$s
Entre el porcentaje y el identificador de tipo pasamos un numero que representa la posicion que usaremos seguido del signo de dinero, para indicarle que este valor es una posicion. El resto sigue siendo lo mismo, salvo que eliminamos la repeticion de texto porque ahora no es necesario. Como podemos saber el numero de la posicion? Es simple, siempre el campo del texto tiene el valor de 0, porque es el primero, y el resto se incrementaran a partir de este. En el ejemplo anterior, la variable texto es la posicion 1, t1 tendra la posicion 2 y t2 la posicion 3. Si hubiera mas argumentos se seguira incrementando este valor. Vamos a modificar el codigo anterior para ver las posibilidades que nos brinda:
#include <stdio.h>
int main()
{
const char * texto = "Texto";
const char * t1 = "Hola, Mundo";
const char * t2 = "tinchicus.com";
printf("%s1: %s\n%1$s2: %s\n",texto,t1,t2);
return 0;
}
Ahora modificamos la variable texto para mostrar ese texto. La otra es en el especificador donde a cada etiqueta le agregamos un numero para identificarla seguida de los dos puntos. El resto sigue igual que antes. Compilemos y veamos como es la salida:
$ ./printf
Texto1: Hola, Mundo
Texto2: tinchicus.com
$
En este caso ahora tenemos dos etiquetas diferentes para cada texto. En este campo pueden pasar todo el texto que deseen y se modificara en base a los especificadores que pasen y este respetara los espacios y modificadores que les pasen. Estos que les pase son los mas basicos para simplemente representar la informacion que pasemos despues. Si necesitan saber mas o tienen curiosidad sobre esta funcion les recomiendo visitar los siguientes posts donde mediante algunos ejemplos vemos la mayoria de los especificadores para trabajar con la informacion recibida:
C / printf
Bienvenidos sean a este post, hoy hablaremos sobre una funcion que hemos utilizado anteriormente. Este metodo es el utilizado para mostrar en pantalla lo que necesitemos, desde el resultado de una funcion hasta mensajes de texto y otros, a medida que lo ibamos usando vimos algunas formas de como formatear el contenido a mostrar pero…
Keep readingC / printf y enteros con signos
Bienvenidos sean a este post, hoy veremos como trabajar con printf y los numeros con signos. En el post anterior vimos una breve explicacion sobre printf y los modificadores disponibles que podemos utilizar para formatear lo que queremos mostrar en pantalla, y en ese mismo post vimos como trabaja con enteros sin signo y en…
Keep readingC / printf y los numeros con decimales
Bienvenidos sean a este post, hoy veremos como formatear numeros con coma flotante. En los dos posts anteriores estuvimos viendo como poder formatear la salida de un printf primero para enteros sin signos y en el siguiente post a los enteros con signos, pero que sucede cuando tenemos numeros de tipo float o double, es…
Keep readingC / printf y texto
Bienvenidos sean a este post, hoy veremos como manejar cadenas de texto. Ya vimos como manejar numeros de varias formas distintas en los posts anteriores, pero hoy nos centraremos en como manejar un simple caracter y una cadena de texto para mostrarlo mediante printf, para ello haremos como antes primero crearemos un nuevo archivo que…
Keep readingEn resumen, hoy hemos visto a printf, que es, para que sirve, sus pros y contras con respecto a lo visto anteriormente, lo hemos visto de una forma muy basica para saber como manejar y formatear la informacion,, asi com tambien les deje una serie de posts para que puedan verlo mas a detalle. Espero les haya resultado de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.


Donatión
It’s for site maintenance, thanks!
$1.50
