Contenido del Curso
Fundamentos de C
Fundamentos de C
Char y String
En la conclusión de nuestra última lección, insinuamos la idea de usar arreglos para manejar texto.
En C, no hay un tipo de dato específico diseñado únicamente para cadenas (o texto). En su lugar, utilizamos un arreglo del tipo char, donde cada elemento del arreglo contiene un carácter único. Así, el texto "c<>definity"
se representaría como:
Puede que hayas notado que el texto "c<>definity"
contiene solo 11 caracteres, sin embargo, el arreglo cuenta con 12 elementos.
Nota
Piénsalo: cada palabra que conoces es solo una combinación de letras.
El carácter \0
Este carácter, \0
, señala el fin de una cadena en C. No lo confundas con el número cero; es un carácter único, no imprimible, similar a \n
. En la tabla ASCII, este carácter tiene el código 0.
Se reserva una celda adicional del arreglo para este carácter.
Siempre que trabajes con texto, asegúrate de que el arreglo que contiene el texto tenga un tamaño de un elemento más que la longitud real del texto.
Nota
Recuerda, incluso un espacio es un carácter y requiere su propio lugar en el arreglo. Por ejemplo:
char array[10] = { 'u','s','e',' ','s','p','a','c','e','\0' }
.
Char vs. String
Es crucial reconocer que 'x'
y "x"
no son lo mismo.
Una cadena consiste en caracteres. Siempre recuerda terminar una cadena con el carácter \0
.
'x'
es simplemente una constante de carácter del tipo char;"x"
es una cadena, un arreglo de valores char, o, en este caso, {'x', '\0'}.
Nota
Asegúrate de no confundir
'\0'
,'0'
y"0"
. El primero es un literal de carácter que representa el carácter con código ASCII 0 (NULL
). El segundo es un literal de carácter para el dígito 0, con un código ASCII de 48. El tercero es una cadena que consta de dos caracteres: el dígito 0 y el terminador de cadena,\0
.
Salida de Cadenas
En C, cuando deseas mostrar cadenas (arreglos de valores char), utilizas el especificador %s
. Este especificador guía a la función printf()
sobre qué tipo de información debe esperar. Al usar %s
, informamos a la función printf()
que recibirá una cadena.
main
#include <stdio.h> int main() { char array[] = { 'c','<','>','d','e','f','i','n','i','t','y','\0' }; printf("%s\n", array); // use %s format specifiers return 0; }
El lenguaje C incluye una biblioteca estándar para la manipulación de cadenas, <string.h>
.
Dentro de esta biblioteca, hay una función que cuenta el número de caracteres en una cadena:
main
#include <stdio.h> #include <string.h> int main() { char array[] = { 'c','<','>','d','e','f','i','n','i','t','y','\0' }; printf("%d\n", strlen(array)); return 0; }
Vamos a sumergirnos en un ejemplo ilustrativo:
main
#include <stdio.h> int main() { char str[] = "c<>definity"; printf("%c\n", str[0] ); return 0; }
Curiosamente, al aprovechar el índice, accedemos al elemento inicial del array. Esencialmente, en su núcleo, las cadenas son solo arrays de tipo char.
Gracias a las propiedades de los arrays, puedes alterar elementos específicos de una cadena usando índices:
Main
#include <stdio.h> int main() { char str[] = "c<>definity"; str[5] = '#'; // change the sixth character `f` to `#` printf("%s\n", str); return 0; }
¡Gracias por tus comentarios!