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 llamaremos ejemplo32.c y le agregaremos este codigo inicial:
ejemplo32.c
#include <stdio.h>
int main()
{
char caracter='C';
char* aCadena = "tinchicus.com, aqui aprendes";
}
Si pasaste por los posts anteriores primero definiremos dos variables para poder trabajar con ellas, en este caso la primera sera solamente un caracter y la segunda sera un texto completo, un detalle que deben cuidar es el tema de las comillas, para un solo caracter siempre debe ser la comilla simple y para los textos siempre debe ser la comilla doble, con esto terminado debemos pasar a agregar el siguiente bloque de codigo:
printf("Salida de texto\n");
printf("Modif.\t Valor Formateado\n");
printf("%%s\t [%s] todo\n", aCadena);
printf("%%30s\t [%30s] Todo alineado derecha, campo=30\n", aCadena);
printf("%%.13s\t [%.13s] Truncado a los primeros 13 carac.\n", aCadena);
printf("%%20.13s\t [%20.13s] Primeros 13 carac. alineado derecha",
aCadena);
printf(", campo=20\n");
printf("%%-20.13s [%-20.13s] Primeros 13 carac., alineado izquierda",
aCadena);
printf(", campo=20\n");
printf("%%*.*s\t [%*.*s] Tomar ancho y precision de argumentos\n",
30,13,aCadena);
Nuestras primeras dos lineas se encargan de mostrar el titulo, el modificador y el texto formateado, la primera linea que tendremos despues de esto sera para mostrar simplemente la cadena contenida en la variable, en la siguiente linea le estableceremos un ancho de campo de 30 caracteres con su orientacion predeterminada, la siguiente a esta la usaremos para truncar la cadena a los primeros 13 caracteres, en la siguinete estableceremos un ancho de campo de 20 caracteres, lo volveremos a truncar a los 13 primeros caracteres y utilizaremos la orientacion predeterminada, es decir a la derecha, la siguiente linea es exactamente igual a la anterior pero le agregamos el orientador para que lo haga a la izquierda, observen que en estas dos lineas agregamos un printf para indicar el tamaño del campo pero lo hago asi de forma estetica nomas pero pueden agregarlo a las comillas del otro printf, la ultima linea es la mas curiosa porque nos permite pasarle un ancho y precision pero como argumentos, al usar los asteriscos, el lenguaje usara los primeros dos valores que pasaremos despues, si observan los pasamos separados por comas antes de la variable de texto, con todo esto comentado compilemos y veamos como es su salida:
tinchicus@dbn001vrt:~/lenguajes/C$ ./prog/ejemplo32
Salida de texto
Modif. Valor Formateado
%s [tinchicus.com, aqui aprendes] todo
%30s [ tinchicus.com, aqui aprendes] Todo alineado derecha, campo=30
%.13s [tinchicus.com] Truncado a los primeros 13 carac.
%20.13s [ tinchicus.com] Primeros 13 carac. alineado derecha, campo=20
%-20.13s [tinchicus.com ] Primeros 13 carac., alineado izquierda, campo=20
%*.*s [ tinchicus.com] Tomar ancho y precision de argumentos
tinchicus@dbn001vrt:~/lenguajes/C$
Observen como nuestra salida quedo formateada a nuestra solicitud, ahora agreguemos el siguiente segmento de codigo:
printf("\nSalida de sub-texto\n");
printf("%%.4s [%.4s] 2da. palabra (usando posicion del array)\n",
&aCadena[15]);
printf("%%.13s [%.13s] ultimas dos palabras ", aCadena + 15);
printf("(usando arimetica de apuntador)\n");
En este bloque veremos como trabajar con sub-texto en nuestras cadenas, la primera linea es para identificar lo que vamos a hacer, la siguiente linea le pasaremos el ancho del sub-texto que vamos a extraer, en este caso cuatro, luego pasaremos un texto indicando que palabra devolveremos y como, aqui lo haremos por la posicion del array, recuerden que las cadenas son array de char todos juntos, pero para que funcione debemos desreferenciarlo por medio de su operador y le pasamos desde que posicion comenzaremos, no se olviden que la primera posicion es la 0, la siguiente linea sera para extraer las ultimas dos palabras, para ello debemos cambiar el ancho para que incluya las dos palabras, pero en este caso le pasamos la operacion arimetica para que comience desde esa posicion, recuerden que la ultima linea la paso asi por estetica nomas, si quieren pueden agregarlo a las comillas anteriores, con todo esto comentado pasemos a compilarlo y ver como es su salida:
...
Salida de sub-texto
%.4s [aqui] 2da. palabra (usando posicion del array)
%.13s [aqui aprendes] ultimas dos palabras (usando arimetica de apuntador)
tinchicus@dbn001vrt:~/lenguajes/C$
Observen como nos devolvio el contenido que mencionamos en los comentarios, de esta forma ustedes pueden trabajar con cualquier texto, puede parecer complejo pero como todo esto es cuestion de practica, por ultimo vamos a agregar el siguiente segmento de codigo:
printf("\nSalida de Caracter\n");
printf("%%c\t[%c]\t\tcaracter (char)\n", caracter);
printf("%%10c\t[%10c]\tcaracter alineado derecha, campo=10\n",
caracter);
printf("%%-10c\t[%-10c]\tcaracter alineado izquierda, campo=10\n",
caracter);
Con este bloque veremos como formatear un solo caracter, observen que en la segunda linea del bloque mostramos el caracter sin ningun tipo de modificacion, de manera predeterminada, la siguiente linea establece un ancho para el campo pero lo alinea de manera predeterminada, es decir a la derecha, la ultima linea hace lo mismo que la anterior pero con el modificador de alineacion para que lo haga a la izquierda, como es un solo caracter mucho mas no podremos hacer, compilemos y veamos como es esta salida:
...
Salida de Caracter
%c [C] caracter (char)
%10c [ C] caracter alineado derecha, campo=10
%-10c [C ] caracter alineado izquierda, campo=10
tinchicus@dbn001vrt:~/lenguajes/C$
Como pueden observar funciono como nosotros quisimos pero orientado a un solo caracter, con esto ahora si que completamos una buena base para poder utilizar a printf como corresponde, como vimos a traves de estos cuatro posts puede ser una herramienta muy poderosa para formatear y mostrar nuestra informacion, antes de terminar veamos como quedo el codigo de nuestro archivo:
ejemplo32.c
#include <stdio.h>
int main()
{
char caracter='C';
char* aCadena = "tinchicus.com, aqui aprendes";
printf("Salida de texto\n");
printf("Modif.\t Valor Formateado\n");
printf("%%s\t [%s] todo\n", aCadena);
printf("%%30s\t [%30s] Todo alineado derecha, campo=30\n", aCadena);
printf("%%.13s\t [%.13s] Truncado a los primeros 13 carac.\n", aCadena);
printf("%%20.13s\t [%20.13s] Primeros 13 carac. alineado derecha",
aCadena);
printf(", campo=20\n");
printf("%%-20.13s [%-20.13s] Primeros 13 carac., alineado izquierda",
aCadena);
printf(", campo=20\n");
printf("%%*.*s\t [%*.*s] Tomar ancho y precision de argumentos\n",
30,13,aCadena);
printf("\nSalida de sub-texto\n");
printf("%%.4s [%.4s] 2da. palabra (usando posicion del array)\n",
&aCadena[15]);
printf("%%.13s [%.13s] ultimas dos palabras ", aCadena + 15);
printf("(usando arimetica de apuntador)\n");
printf("\nSalida de Caracter\n");
printf("%%c\t[%c]\t\tcaracter (char)\n", caracter);
printf("%%10c\t[%10c]\tcaracter alineado derecha, campo=10\n",
caracter);
printf("%%-10c\t[%-10c]\tcaracter alineado izquierda, campo=10\n",
caracter);
}
Y esta debe ser la salida de este codigo:
tinchicus@dbn001vrt:~/lenguajes/C$ ./prog/ejemplo32
Salida de texto
Modif. Valor Formateado
%s [tinchicus.com, aqui aprendes] todo
%30s [ tinchicus.com, aqui aprendes] Todo alineado derecha, campo=30
%.13s [tinchicus.com] Truncado a los primeros 13 carac.
%20.13s [ tinchicus.com] Primeros 13 carac. alineado derecha, campo=20
%-20.13s [tinchicus.com ] Primeros 13 carac., alineado izquierda, campo=20
%*.*s [ tinchicus.com] Tomar ancho y precision de argumentos
Salida de sub-texto
%.4s [aqui] 2da. palabra (usando posicion del array)
%.13s [aqui aprendes] ultimas dos palabras (usando arimetica de apuntador)
Salida de Caracter
%c [C] caracter (char)
%10c [ C] caracter alineado derecha, campo=10
%-10c [C ] caracter alineado izquierda, campo=10
tinchicus@dbn001vrt:~/lenguajes/C$
En resumen, hoy hemos visto como utilizar a printf para mostrar texto, las opciones basicas para mostrar un texto, asi como despues vimos las herramientas que nos brinda para poder extraer un sub-texto de una cadena o texto para finalmente ver como podemos hacerlo con un solo caracter, con esto completamos el recorrido de printf a traves de varios posts, espero les haya sido 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.


Donación
Es para mantenimento del sitio, gracias!
$1.50
