Las cadenas de caracteres (también llamadas cadenas o strings) son un tipo particular de vectores, son de hecho vectores de char, con la particularidad que tienen una marca de fin (el caracter '\0'), además el lenguaje nos permite escribirlas como texto dentro de comillas dobles. Veamos unos ejemplos de su declaración:
char cadena_hola[]="Hola"; char otro_hola[]={'H','o','l','a','\0'}; // Igual al anterior char vector[]={'H','o','l','a'}; /* Un vector de 4 elementos, con los elementos 'H','o','l' y 'a' */ char espacio_cadena[1024]="Una cadena en C"; char cadena_vacia[]="";
¿Como se declaran o definen las cadenas de caracteres?La manera de definir una cadena es la siguiente:
- char <identificador> [<longitud máxima>];
Una cadena de caracteres se maneja con string. Para esto se incluye <string>.
Para declarar una cedena, se puede hacer:
Y para buscar una subcadena dentro de otra se puede usar el método find.
Para declarar una cedena, se puede hacer:
- string cadena = "texto";
Y para buscar una subcadena dentro de otra se puede usar el método find.
¿como se hace una lectura de una cadenas de caracteres?
- scanf("%s",cadena); o gets(cadena);
La ventaja de utilizar el gets en lugar del scanf es la lectura de los espacios en blanco, cosa que no hace el scanf.
Otra forma de leer una cadena de caracteres es hacerlo caracter por caracter como un arreglo unidimensional o vector, manejandola posicion por posicion cadena[posicion], mas adelante se vera un ejemplo de lo antes mencionado.
¿Como se hace una impresión de caracteres?
- puts(cadena);
- printf("%s",cadena);
la diferencia entre la funcion printf y puts para cadenas de caracteres es que la funcion puts cambia de linea por si sola y la función printf no, la ventaja de la funcion printf es que con ella si se pueden desplegar varias cadenas.
Al igual que para leer una cadena tambien se puede desplegar una cadena como un arreglo, es decir posicion por posición, esto tambien se manejara en un ejemplo mas adelante.
Algunos ejemplos usando <string.h>:
#include <stdio.h> #include <string.h> ... char color[] = "rojo"; char grosor[] = "grueso"; ... char descripcion[1024]; strcpy(descripcion, "Lapiz color "); strncat(descripcion, color, 1024); strncat(descripcion, " de trazo ", 1024); strncat(descripcion, grosor, 1024); // descripcion contiene "Lapiz color rojo de trazo grueso" ...
void intercambiar(char vector[], int pos1, int pos2); void invierte_cadena(char cadena[]) { int largo = strlen(cadena); for (int i=0; i < (largo/2); i++) { intercambiar(cadena, i, (largo-1)-i); } } void intercambiar(char vector[], int pos1, int pos2) { char aux=vector[pos1]; vector[pos1]=vector[pos2]; vector[pos2]=aux; }
No hay comentarios:
Publicar un comentario