Inicialización de una cadena de caracteres
En general, los arreglos son inicializados indicando la lista de elementos del arreglo entre corchetes:
char cadena[] = {'H','e','l','l','o','\0'};
En el caso especial de los arreglos de caracteres, podemos utilizar una inicialización mejor que indique símplemente una cadena de caracteres constante:
char cadena[] = "Hello";Nosotros podemos acceder al primer componente del arreglo por medio de: dias[0], al segundo elemento por: dias[1] y al último elemento por dias[11].
Durante la inicialización, la computadora reserva automáticamente el número de bytes necesarios para la cadena, esto es, el número de caracteres más uno (aquí: 6 caracteres).
![]()
Acceso a los elementos de una cadena
El acceso a un elemento de una cadena de caracteres puede hacerse de la misma manera que el acceso al elemento de un arreglo. En la siguiente declaración de una cadena:
char A[6];
nosotros hemos definido un arreglo A con seis elementos, los cuales podemos accesar de la siguiente manera:
A[0], A[1], ... , A[5]Ejemplo:
![]()
La biblioteca string tiene una gran cantidad de funciones prácticas para trabajar con cadenas de caracteres. A continuación se describen las funciones más importantes:
- strlen(<s>) regresa la longitud de la cadena sin tomar en cuenta el caracter de final de cadena.
- strcpy(<s>, <t>) copia el contenido del arreglo <t> al arreglo <s>
- strcat(<s>, <t>) concatena el contenido de <t> al final de <s>
- strcmp(<s>, <t>) compara las dos cadenas y regresa un 0 si las dos cadenas son iguales, un número negativo si <s> precede ortográficamente a <t> y un número positivo (mayor que cero) si <t> precede ortográfricamente a <s>.
- strncpy(<s>, <t>, <n>) copia <n> caracteres del arreglo <t> a <s>.
- strncat(<s>, <t>, <n>) concatena <n> caracteres del arreglo <t> al final de <s>.
A diferencia de los arreglos de tipos de datos numéricos (arreglos de enteros, de números con punto decimal, etc.), en donde cada elemento del arreglo se debe considerar como una variable independiente de los demás, los arreglos de caracteres (cadenas) se pueden manipular de dos maneras. Por ejemplo, para desplegar un arreglo de caracteres podemos hacerlo dentro de un ciclo, desde el primer caracter (el caracter 0) hasta el último caracter (lo que nos regrese la función strlen):
for(i=0; i<strlen(cadena); i++)
printf("%c",cadena[i]);
Debido a que lo que se está desplegando aquí es cada uno de los elementos del arreglo (una letra), desde el principio hasta el fin, el caracter de conversión que se utiliza es el %c, ya que, como se dijo, se están desplegando letras. Existe una mejor manera de desplegar una cadena, y es utilizando el caracter de conversión %s, que, como sabemos, es el indicado para desplegar y leer cadenas de caracteres:
printf("%s",cadena);
Sin embargo, para realizar cualquier operación con un arreglo de caracteres (cambiar de mayúsculas a minúsculas, comparar letra por letra dos arreglos, verificar la existencia de algún caracter en particular dentro de un arreglo, etc.), lo que se tiene que hacer siempre es recorrer el arreglo dentro de un ciclo, desde desde el primer caracter (el caracter 0) hasta el último caracter (lo que nos regrese la función strlen) como se mencionó anteriormente y hacer la operación correspondiente letra por letra.