En este tema, aprenderemos sobre el manejo de cadenas en C. Las cadenas son secuencias de caracteres terminadas en un carácter nulo ('\0'). A lo largo de esta sección, cubriremos cómo declarar, inicializar y manipular cadenas utilizando funciones estándar de la biblioteca de C.

Contenido

  1. Declaración e Inicialización de Cadenas
  2. Funciones de la Biblioteca string.h
  3. Ejemplos Prácticos
  4. Ejercicios

  1. Declaración e Inicialización de Cadenas

Declaración de Cadenas

En C, una cadena se puede declarar de varias maneras. Aquí hay algunos ejemplos:

char str1[10]; // Declara una cadena de 10 caracteres
char str2[] = "Hola"; // Inicializa una cadena con "Hola"
char *str3 = "Mundo"; // Apunta a una cadena constante "Mundo"

Inicialización de Cadenas

Las cadenas se pueden inicializar de diferentes maneras:

char str1[10] = "Hola"; // Inicializa con "Hola" y rellena el resto con '\0'
char str2[] = {'H', 'o', 'l', 'a', '\0'}; // Inicializa con un array de caracteres

  1. Funciones de la Biblioteca string.h

La biblioteca string.h proporciona varias funciones útiles para manipular cadenas. Aquí hay algunas de las más comunes:

Función Descripción
strlen(str) Devuelve la longitud de la cadena str
strcpy(dest, src) Copia la cadena src a dest
strncpy(dest, src, n) Copia los primeros n caracteres de src a dest
strcat(dest, src) Concatena src al final de dest
strncat(dest, src, n) Concatena los primeros n caracteres de src a dest
strcmp(str1, str2) Compara str1 y str2
strncmp(str1, str2, n) Compara los primeros n caracteres de str1 y str2
strchr(str, c) Devuelve un puntero a la primera ocurrencia de c en str
strstr(haystack, needle) Devuelve un puntero a la primera ocurrencia de needle en haystack

Ejemplos de Uso

strlen

#include <stdio.h>
#include <string.h>

int main() {
    char str[] = "Hola Mundo";
    printf("La longitud de la cadena es: %lu\n", strlen(str));
    return 0;
}

strcpy

#include <stdio.h>
#include <string.h>

int main() {
    char src[] = "Hola";
    char dest[10];
    strcpy(dest, src);
    printf("La cadena copiada es: %s\n", dest);
    return 0;
}

strcat

#include <stdio.h>
#include <string.h>

int main() {
    char dest[20] = "Hola";
    char src[] = " Mundo";
    strcat(dest, src);
    printf("La cadena concatenada es: %s\n", dest);
    return 0;
}

strcmp

#include <stdio.h>
#include <string.h>

int main() {
    char str1[] = "Hola";
    char str2[] = "Mundo";
    if (strcmp(str1, str2) == 0) {
        printf("Las cadenas son iguales\n");
    } else {
        printf("Las cadenas son diferentes\n");
    }
    return 0;
}

  1. Ejemplos Prácticos

Ejemplo 1: Contar Vocales en una Cadena

#include <stdio.h>
#include <string.h>

int contar_vocales(char *str) {
    int count = 0;
    for (int i = 0; i < strlen(str); i++) {
        if (str[i] == 'a' || str[i] == 'e' || str[i] == 'i' || str[i] == 'o' || str[i] == 'u' ||
            str[i] == 'A' || str[i] == 'E' || str[i] == 'I' || str[i] == 'O' || str[i] == 'U') {
            count++;
        }
    }
    return count;
}

int main() {
    char str[] = "Hola Mundo";
    printf("El número de vocales en '%s' es: %d\n", str, contar_vocales(str));
    return 0;
}

Ejemplo 2: Invertir una Cadena

#include <stdio.h>
#include <string.h>

void invertir_cadena(char *str) {
    int n = strlen(str);
    for (int i = 0; i < n / 2; i++) {
        char temp = str[i];
        str[i] = str[n - i - 1];
        str[n - i - 1] = temp;
    }
}

int main() {
    char str[] = "Hola Mundo";
    invertir_cadena(str);
    printf("La cadena invertida es: %s\n", str);
    return 0;
}

  1. Ejercicios

Ejercicio 1: Contar Palabras en una Cadena

Descripción: Escribe una función que cuente el número de palabras en una cadena. Una palabra se define como una secuencia de caracteres separados por espacios.

Solución:

#include <stdio.h>
#include <string.h>
#include <ctype.h>

int contar_palabras(char *str) {
    int count = 0;
    int in_word = 0;
    for (int i = 0; i < strlen(str); i++) {
        if (isspace(str[i])) {
            in_word = 0;
        } else if (!in_word) {
            in_word = 1;
            count++;
        }
    }
    return count;
}

int main() {
    char str[] = "Hola Mundo, esto es un ejemplo";
    printf("El número de palabras en '%s' es: %d\n", str, contar_palabras(str));
    return 0;
}

Ejercicio 2: Reemplazar Caracteres en una Cadena

Descripción: Escribe una función que reemplace todas las ocurrencias de un carácter en una cadena con otro carácter.

Solución:

#include <stdio.h>
#include <string.h>

void reemplazar_caracter(char *str, char old_char, char new_char) {
    for (int i = 0; i < strlen(str); i++) {
        if (str[i] == old_char) {
            str[i] = new_char;
        }
    }
}

int main() {
    char str[] = "Hola Mundo";
    reemplazar_caracter(str, 'o', 'a');
    printf("La cadena modificada es: %s\n", str);
    return 0;
}

Conclusión

En esta sección, hemos aprendido cómo manejar cadenas en C, incluyendo su declaración, inicialización y manipulación utilizando funciones de la biblioteca string.h. También hemos visto ejemplos prácticos y ejercicios para reforzar los conceptos aprendidos. Con esta base, estarás preparado para trabajar con cadenas en tus programas en C y abordar problemas más complejos relacionados con el manejo de texto.

Curso de Programación en C

Módulo 1: Introducción a C

Módulo 2: Tipos de Datos y Variables

Módulo 3: Flujo de Control

Módulo 4: Funciones

Módulo 5: Arreglos y Cadenas

Módulo 6: Punteros

Módulo 7: Estructuras y Uniones

Módulo 8: Asignación Dinámica de Memoria

Módulo 9: Manejo de Archivos

Módulo 10: Temas Avanzados

Módulo 11: Mejores Prácticas y Optimización

Módulo 12: Proyecto y Evaluación Final

© Copyright 2024. Todos los derechos reservados