martes, 22 de mayo de 2012

Tarea. Cadena de caracteres.

¿Que son?

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?

Una cadena en C++ es un conjunto de caracteres, o valores de tipo char, terminados con el carácter nulo, es decir el valor numérico 0. Internamente, en el ordenador, se almacenan en posiciones consecutivas de memoria. Este tipo de estructuras recibe un tratamiento muy especial, ya que es de gran utilidad y su uso es continuo.
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:

  • 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?

Para hacer la lectura de una cadena de caracteres se pueden utilizar la función scanf o gets de la siguiente forma:

  • 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?

Para imprimir una cadena de caracteres se puede utilizar la función puts o la función printf, como se indica a continuación:

  • 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