Cadenas como arreglos de char
Parte de la sección Lógica y Flujo del Journey de C de Coddy. Lección 12 de 63.
En C, no existe un tipo de dato de cadena (string) integrado como el que podrías encontrar en otros lenguajes de programación. En su lugar, las cadenas se representan como arreglos de caracteres. Este concepto fundamental es esencial para comprender cómo se maneja el texto en la programación en C.
Una cadena en C es simplemente una secuencia de caracteres almacenados en ubicaciones de memoria consecutivas. Para crear una cadena, se declara un arreglo de caracteres que sea lo suficientemente grande como para contener todos los caracteres que necesites, más un espacio adicional para un carácter de terminación especial.
char greeting[6]; // Puede contener 5 caracteres + terminador
char message[20]; // Puede contener hasta 19 caracteres + terminadorLa forma más conveniente de trabajar con cadenas es inicializarlas directamente con un literal de cadena al declarar el arreglo. C maneja automáticamente los detalles de almacenar cada carácter en el arreglo:
char greeting[6] = "Hello";
// Esto almacena: 'H', 'e', 'l', 'l', 'o', más un terminador especialTambién puedes dejar que C determine automáticamente el tamaño del array omitiendo la especificación del tamaño al inicializarlo con un literal de cadena:
char greeting[] = "Hello"; // C automáticamente establece este tamaño en 6Comprender que las cadenas son arreglos de caracteres es crucial porque explica cómo C maneja los datos de texto y te prepara para trabajar con funciones de manipulación de cadenas que operan sobre estos arreglos de caracteres.
Desafío
FácilEscribe un programa en C que demuestre cómo crear y trabajar con matrices de caracteres para almacenar cadenas. Tu programa debe:
- Declarar una matriz de caracteres llamada
greetingcon espacio suficiente para contener la cadena "Hello" (recuerda tener en cuenta el terminador nulo) - Inicializar la matriz
greetingcon el literal de cadena "Hello" - Declarar una segunda matriz de caracteres llamada
messagecon 20 elementos - Inicializar la matriz
messagecon el literal de cadena "Welcome" - Declarar una tercera matriz de caracteres llamada
wordsin especificar el tamaño, y permitir que C determine automáticamente el tamaño al inicializarla con "Programming" - Imprimir las tres cadenas usando
printfcon el especificador de formato%s - Imprimir el tamaño de cada matriz usando
sizeofpara demostrar cuánta memoria ocupa cada matriz de caracteres
Tu salida debe mostrar los resultados con el siguiente formato:
greeting: Hello
message: Welcome
word: Programming
Size of greeting: 6
Size of message: 20
Size of word: 12Este desafío comprueba tu comprensión de cómo declarar matrices de caracteres para almacenar cadenas, cómo los literales de cadena terminan automáticamente en nulo cuando se asignan a matrices de caracteres y cómo C calcula automáticamente los tamaños de las matrices cuando omites la especificación del tamaño durante la inicialización.
Pruébalo tú mismo
#include <stdio.h>
int main() {
// TODO: Escribe tu código aquí
// Declara e inicializa los arreglos de caracteres como se especifica en el desafío
// Imprime las cadenas y sus tamaños
printf("greeting: %s\n", greeting);
printf("message: %s\n", message);
printf("word: %s\n", word);
printf("Size of greeting: %lu\n", sizeof(greeting));
printf("Size of message: %lu\n", sizeof(message));
printf("Size of word: %lu\n", sizeof(word));
return 0;
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y Flujo
1Fundamentos de Punteros
¿Qué es un puntero?Declaración de punterosEl operador de dirección (&)El operador de desreferencia (*)Punteros NULLResumen: Conceptos básicos de punteros4Proyecto: Utilidad de texto simple
Descripción general del proyectoContar caracteres2Punteros y Arrays
Nombres de Arrays como PunterosElementos de un Array - PunterosAritmética de PunterosComparación de PunterosResumen: Recorrido de Arrays con Punteros5Punteros y funciones
Paso por valorPasar punteros a funcionesModificar variables mediante punterosUn ejemplo clásico: Intercambio (Swap)Pasar arrays a funcionesResumen: Argumentos de punteros a funciones3Arreglos de caracteres y cadenas
Cadenas como arreglos de charEl terminador nuloEntrada de cadenas con scanfUso de strlen()Uso de strcpy()Uso de strcat()Uso de strcmp()Resumen: Funciones básicas de cadenasPractica por tu cuenta: Compilador de C online