Menu
Coddy logo textTech

Cadenas como arreglos de char

Parte de la sección Logic & Flow 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 + terminador

La 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 especial

Tambié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 6

Comprender 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.

challenge icon

Desafío

Fácil

Escribe un programa en C que demuestre la creación y el trabajo con arreglos de caracteres para almacenar cadenas. Tu programa debe:

  1. Declarar un arreglo de caracteres llamado greeting con espacio suficiente para contener la cadena "Hello" (recuerda tener en cuenta el terminador nulo)
  2. Inicializar el arreglo greeting con el literal de cadena "Hello"
  3. Declarar un segundo arreglo de caracteres llamado message con 20 elementos
  4. Inicializar el arreglo message con el literal de cadena "Welcome"
  5. Declarar un tercer arreglo de caracteres llamado word sin especificar el tamaño, y dejar que C determine automáticamente el tamaño inicializándolo con "Programming"
  6. Imprimir las tres cadenas usando printf con el especificador de formato %s
  7. Imprimir el tamaño de cada arreglo usando sizeof para demostrar cuánta memoria ocupa cada arreglo de caracteres

Tu salida debe mostrar los resultados en el siguiente formato:

greeting: Hello
message: Welcome
word: Programming
Size of greeting: 6
Size of message: 20
Size of word: 12

Este desafío pone a prueba tu comprensión sobre cómo declarar arreglos de caracteres para almacenar cadenas, cómo los literales de cadena se terminan automáticamente con un carácter nulo cuando se asignan a arreglos de caracteres, y cómo C calcula automáticamente los tamaños de los arreglos cuando omites la especificación del tamaño durante la inicialización.

Hoja de referencia

En C, las cadenas se representan como arreglos de caracteres. No existe un tipo de dato de cadena integrado.

Declara un arreglo de caracteres con un tamaño especificado:

char greeting[6];  // Puede contener 5 caracteres + terminador
char message[20]; // Puede contener hasta 19 caracteres + terminador

Inicializa con un literal de cadena:

char greeting[6] = "Hello";
// Esto almacena: 'H', 'e', 'l', 'l', 'o', más un terminador especial

Deja que C determine automáticamente el tamaño del arreglo:

char greeting[] = "Hello";  // C automáticamente hace que este tamaño sea 6

Imprime cadenas usando el especificador de formato %s:

printf("%s", greeting);

Obtén el tamaño del arreglo usando sizeof:

sizeof(greeting)  // Devuelve el total de bytes ocupados por el arreglo

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;
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Logic & Flow