Crear iteradores de matrices de cadenas en C

CBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderás cómo crear e iterar a través de una matriz de cadenas en el lenguaje de programación C. Declararás una matriz de cadenas, iterarás a través de ella utilizando un bucle while, manejarás cadenas terminadas en nulo y mostrarás cada cadena en la matriz. Estas habilidades son esenciales para trabajar con datos de texto y construir aplicaciones C más complejas.

El laboratorio cubre los siguientes pasos: declarar una matriz de cadenas, iterar a través de la matriz con un bucle while, manejar cadenas terminadas en nulo, mostrar cada cadena en la matriz y compilar y ejecutar el programa C. Al completar este laboratorio, adquirirás una sólida comprensión de cómo trabajar con matrices de cadenas en C, que es un concepto fundamental en la programación en C.

Declarar una matriz de cadenas

En este paso, aprenderás cómo declarar una matriz de cadenas en el lenguaje de programación C. Las matrices de cadenas son estructuras de datos poderosas que te permiten almacenar múltiples cadenas en una sola variable.

  1. Abre el WebIDE y crea un nuevo archivo llamado string-array.c en el directorio ~/project:
cd ~/project
touch string-array.c
  1. Abre el archivo en el WebIDE y agrega el siguiente código:
#include <stdio.h>

void main() {
    const char* fruits[] = {
        "Apple",
        "Banana",
        "Cherry",
        "Date",
        NULL
    };
}

Este código demuestra cómo declarar una matriz de cadenas en C. Analicemos los componentes clave:

  • const char* indica una matriz de punteros a cadenas constantes
  • fruits[] es el nombre de la matriz
  • La matriz contiene cuatro nombres de frutas como cadenas
  • NULL se utiliza para marcar el final de la matriz, lo cual será útil en iteraciones futuras

Ten en cuenta que esta matriz está terminada en nulo, lo que significa que el último elemento es NULL. Esta es una práctica común en C para matrices de cadenas, ya que ayuda a determinar el final de la matriz durante la iteración.

Iterar a través de la matriz con un bucle while

En este paso, aprenderás cómo iterar a través de una matriz de cadenas utilizando un bucle while en el lenguaje de programación C. A partir del paso anterior, modificaremos el archivo string-array.c para mostrar el contenido de la matriz de frutas.

  1. Abre el archivo string-array.c en el WebIDE:
  2. Actualiza el código para incluir un bucle while para iterar a través de la matriz:
#include <stdio.h>

void main() {
    const char* fruits[] = {
        "Apple",
        "Banana",
        "Cherry",
        "Date",
        NULL
    };

    int i = 0;
    while (fruits[i]) {
        printf("Fruit: %s\n", fruits[i]);
        ++i;
    }
}

Analicemos la lógica de iteración:

  • int i = 0 inicializa un contador de índice
  • while (fruits[i]) continúa el bucle hasta que alcanza el terminador NULL
  • printf("Fruit: %s\n", fruits[i]) muestra el nombre de cada fruta
  • ++i incrementa el índice para pasar al siguiente elemento
  1. Compila el programa:
gcc string-array.c -o string-array
  1. Ejecuta el programa compilado:
./string-array

Ejemplo de salida:

Fruit: Apple
Fruit: Banana
Fruit: Cherry
Fruit: Date

El bucle while te permite iterar a través de la matriz verificando el terminador NULL, que indica el final de la matriz. Este método es una forma común y eficiente de recorrer matrices de cadenas en C.

Manejar cadenas terminadas en nulo

En este paso, aprenderás sobre las cadenas terminadas en nulo y cómo se utilizan para marcar el final de las matrices de cadenas en la programación en C. Comprender la terminación en nulo es crucial para trabajar con matrices de cadenas.

  1. Abre el archivo string-array.c en el WebIDE:
  2. Modifica el código para demostrar la terminación en nulo y la longitud de las cadenas:
#include <stdio.h>
#include <string.h>

void main() {
    const char* fruits[] = {
        "Apple",
        "Banana",
        "Cherry",
        "Date",
        NULL
    };

    int i = 0;
    while (fruits[i]) {
        printf("Fruit: %s\n", fruits[i]);
        printf("Length of %s: %lu\n", fruits[i], strlen(fruits[i]));
        ++i;
    }

    printf("Total number of fruits: %d\n", i);
}

Modificaciones clave:

  • Se agregó #include <string.h> para utilizar la función strlen()
  • Se utilizó strlen() para demostrar la longitud de las cadenas
  • Se agregó un conteo del total de frutas utilizando el índice del bucle
  1. Compila el programa:
gcc string-array.c -o string-array
  1. Ejecuta el programa compilado:
./string-array

Ejemplo de salida:

Fruit: Apple
Length of Apple: 5
Fruit: Banana
Length of Banana: 6
Fruit: Cherry
Length of Cherry: 6
Fruit: Date
Length of Date: 4
Total number of fruits: 4

Comprensión de la terminación en nulo:

  • El NULL al final de la matriz actúa como un valor centinela
  • Ayuda a determinar el final de la matriz durante la iteración
  • strlen() funciona contando caracteres hasta que alcanza el terminador nulo (\0)
  • El bucle se detiene cuando encuentra el puntero NULL

Imprimir cada cadena en la matriz

En este paso, explorarás diferentes formas de mostrar cadenas de una matriz, incluyendo opciones de formato y técnicas avanzadas de impresión.

  1. Abre el archivo string-array.c en el WebIDE:
  2. Actualiza el código para demostrar múltiples técnicas de impresión:
#include <stdio.h>
#include <string.h>

void main() {
    const char* fruits[] = {
        "Apple",
        "Banana",
        "Cherry",
        "Date",
        NULL
    };

    // Método 1: Impresión básica con índice
    printf("Método 1: Impresión básica\n");
    int i = 0;
    while (fruits[i]) {
        printf("%d: %s\n", i + 1, fruits[i]);
        ++i;
    }

    // Método 2: Impresión formateada con alineación
    printf("\nMétodo 2: Impresión formateada\n");
    i = 0;
    while (fruits[i]) {
        printf("| %-10s | Longitud: %2lu |\n", fruits[i], strlen(fruits[i]));
        ++i;
    }

    // Método 3: Impresión con formato adicional
    printf("\nMétodo 3: Impresión avanzada\n");
    i = 0;
    while (fruits[i]) {
        printf("Fruta #%d: [%s] tiene %lu caracteres\n",
               i + 1, fruits[i], strlen(fruits[i]));
        ++i;
    }
}
  1. Compila el programa:
gcc string-array.c -o string-array
  1. Ejecuta el programa compilado:
./string-array

Ejemplo de salida:

Método 1: Impresión básica
1: Apple
2: Banana
3: Cherry
4: Date

Método 2: Impresión formateada
| Apple      | Longitud:  5 |
| Banana     | Longitud:  6 |
| Cherry     | Longitud:  6 |
| Date       | Longitud:  4 |

Método 3: Impresión avanzada
Fruta #1: [Apple] tiene 5 caracteres
Fruta #2: [Banana] tiene 6 caracteres
Fruta #3: [Cherry] tiene 6 caracteres
Fruta #4: [Date] tiene 4 caracteres

Técnicas de impresión demostradas:

  • Indexación básica con printf()
  • Impresión formateada con ancho y alineación
  • Formato avanzado con información adicional
  • Uso de strlen() para obtener la longitud de la cadena

Resumen

En este laboratorio, aprendiste cómo declarar una matriz de cadenas en la programación en C, lo que te permite almacenar múltiples cadenas en una sola variable. También aprendiste cómo iterar a través de la matriz utilizando un bucle while, manejar cadenas terminadas en nulo y mostrar cada cadena en la matriz. Estas técnicas son fundamentales para trabajar con estructuras de datos de cadenas en C y proporcionan una base sólida para tareas más avanzadas de manipulación de cadenas.