Cadenas de Caracteres.

Cadenas de Caracteres (Definición)

Las cadenas de caracteres son vectores de tipo carácter (char) que reciben un tratamiento especial para simular el tipo de datos “string”, presente en otros lenguajes de programación. Para que un vector de caracteres pueda ser considerado como una cadena de caracteres, el ´ultimo de los elementos útiles del vector debe ser el carácter nulo (código ASCII 0). Según esto, si se quiere declarar una cadena formada por N caracteres, deberá declararse un vector con N + 1 elementos de tipo carácter. Por ejemplo, la declaración char cadena[6]; reserva suficiente espacio en memoria para almacenar una cadena de 5 caracteres, como la palabra "casco":

cadena01

En C pueden definirse constantes correspondientes a cadenas de caracteres. Se usan comillas dobles para delimitar el principio y el final de la cadena, a diferencia de las comillas simples empleadas con las constantes de tipo carácter. Por ejemplo, la cadena constante "H" tiene muy poco que ver con el carácter constante ’H’, si observamos la representación interna de ambos:

cadena02

Asignación.

Mientras que la consulta de elementos de una cadena de caracteres se realiza de la misma forma que con los vectores, las asignaciones tienen ciertas peculiaridades. Como en toda tabla, puede asignarse cada carácter de la cadena individualmente. No debería olvidarse en ningún caso que el ´ultimo carácter valido de la misma debe ser el carácter nulo (’\0’). El siguiente ejemplo inicializa la cadena de caracteres cadena con la palabra "casco". Nótese que las tres ´ultimas posiciones del vector no se han usado. Es más, aunque se les hubiese asignado algún carácter, su contenido sería ignorado. Esto es, el contenido del vector en las posiciones posteriores al carácter nulo es ignorado.

    char cadena[10]; 
    . . . 
    cadena[0] = ’c’; 
    cadena[1] = ’a’;
    cadena[2] = ’s’; 
    cadena[3] = ’c’; 
    cadena[4] = ’o’;
    cadena[5] = ’\0’;
            

La inicialización de una cadena de caracteres durante la declaración puede hacerse del mismo modo que en los vectores, aunque no debe olvidarse incluir el carácter nulo al final de la cadena. Sin embargo, existe un método de inicialización propio de las cadenas de caracteres, cuyo formato general es:

char nombre [tamaño] = "cadena";

Usando este tipo de inicialización, el carácter nulo es añadido automáticamente al final de la cadena. Así pues, una inicialización típica de vectores como la siguiente:

char nombre[10] = { ’J’, ’U’, ’A’, ’N’, ’A’, ’\0’};

Puede hacerse también de forma equivalente como:

char nombre[10] = "JUANA";

Finalmente, la inicialización anterior puede hacerse sin necesidad de especificar el tamaño del vector correspondiente. En este caso, el compilador se encarga de calcularlo automáticamente, reservando espacio de memoria suficiente para almacenar la cadena, incluyendo el carácter nulo al final. Así pues, la siguiente declaración reserva memoria para almacenar 6 caracteres y los inicializa adecuadamente con las letras de la palabra JUANA:

char nombre[] = "JUANA";

La cadena vacía.

Otra curiosidad de las cadenas de caracteres se refiere a la cadena vacía, "", que consta únicamente del carácter nulo. Puesto que los caracteres posteriores al carácter nulo son ignorados, convertir una cadena con cualquier valor almacenado a la cadena vacía es tan simple como asignar el carácter nulo a la posición 0 de dicha cadena. He aquí un ejemplo:

    char cadena [12] = "Una frase";
    . . .
    cadena[0] = ’\0’; /* Ahora es una cadena vacía */
            

cadena03


Seguir a paginadeC en Twitter Foro de Página de C ¡CSS Válido!