Cadenas de caracteres #13

Algo que no se vio en vectores es que cuando se les pasa como parámetros a una función con la siguiente cabecera (por ejemplo)

int sumaelementos(int *vector, int nelementos);

Se hace de la siguiente manera:

suma = sumaelementos(vector, nelementos);

Dentro de la función accedemos a los elementos del vector de la siguiente manera:



v[2] = n;

Por ejemplo. Es decir, accedemos como si estuviéramos fuera de la función, no hay que usar * ni nada de eso. Esto es una nota aclaratorio, quizás alguien haya tenido problemas con esto. Así ya no ocurrirá, comencemos con el tema de hoy.

Capítulo 13: Cadenas de caracteres

Ya hemos trabajados con arrays unidimensionales (vectores) y bidimensionales (matrices). Estos son herramientas muy potentes de la programación y muy útiles. Ahora veremos un tipo especial de vectores que usaremos mucho: las cadenas de caracteres.

Una cadena de caracteres es un vector de caracteres, simplemente eso, es decir, se trata de una tira de caracteres todos puestos uno detrás de otro. Esto lo podemos utilizar para representar palabras, textos etc.

Para declarar una cadena de caracteres hacemos lo que ya todos os imagináis:

char palabra[25];

palabra = “Hola, me llamo David”

En esta variable tipo cadena de caracteres podemos almacenar hasta 24 caracteres, porque es necesario reservar espacio para el carácter denominado fin de cadena (). Este carácter sirve para decirle a C cuando termina la cadena. Cuando asignamos a una variable cadena de caracteres una cadena lo hacemos con el operador asignación (=) y con la cadena entre comillas. En este momento no hace falta indicarle n, el C ya lo hace él solito. Hemos de tener cuidado con el tope de elementos de una cadena y no salirnos, al igual que con los vectores.

Ahora veamos cómo se manejan las cadenas. Podemos ir recorriéndolas manualmente, contando sus elementos, cambiándolos de orden, en definitiva, procesando sus datos uno a uno. Esto se puede hacer, de la misma manera que manejamos cadenas (o vectores) de enteros o de cualquier otro tipo de dato básico. La ventaja con la que contamos es que C trae de serie una biblioteca de manejo de cadenas, string.h. Deberemos incluirla junto con stdio.h y stdlib.h al comienzo de nuestro código si queremos utilizar las funciones que explicaré en las siguientes líneas.

strlen: Esta función nos devuelve el número de caracteres de una cadena (sin contar con )

char nombre[5+1] = “David”;

printf(“Mi nombre tiene %d letras”, strlen(nombre));

strcpy: Esta función recibe dos cadenas de caracteres y copia el contenido de la cadena 2 en la cadena 1.



char nombre[5+1] = “David”;

char nombre2[5+1];

strcpy(nombre2, nombre);

strcat: Copia la cadena dos al final de la cadena 1, es decir, concatena dos cadenas.

char nombre[30] = “David ”;

char nombre2[20] = “Saltares”;

strcpy(nombre2, nombre);

Al final el contenido de nombre sería David Saltares. Hemos de asegurarnos de que hay suficiente espacio en la cadena 1.

printf: Esta función se usa también para imprimir cadenas:

printf(“Mi nombre es %s”, nombre);

puts: Imprime una cadena por pantalla.



puts(nombre);



scanf: Como printf también sirve para manejar cadenas.



scanf(“%s”, nombre);

fflush(stdin);

gets: Lee una cadena desde el teclado.

gets(nombre);

Debemos de asegurarnos de que vaya a caber lo que leamos.

Bien, ya sabemos manejar cadenas, recordad que hay que incluir la biblioteca string.h, sino os dará error. Ahora os mando tarea. Debéis crear vuestras propias funciones de manejo de cadenas, os pongo las cabeceras para ayudaros:

int contarcaracteres(char *cadena);

void copiarcadenas(char *cadena1, char *cadena2);

void contatenar(char *cadena1, char *cadena2);




    el 30.10.08

 

Especiales