Cadenas de Caracteres

Declaración e inicialización de cadenas

En C, las cadenas de caracteres son secuencias de caracteres terminadas en nulo (\0). Son fundamentales para trabajar con texto en programas en C. Aquí tienes diferentes formas de declarar e inicializar cadenas.

				
					#include <stdio.h>

int main() {
    // Declaración e inicialización de una cadena
    char cadena1[] = "Hola, mundo!";

    // Declaración de una cadena y luego inicialización
    char cadena2[10];
    cadena2[0] = 'H';
    cadena2[1] = 'o';
    cadena2[2] = 'l';
    cadena2[3] = 'a';
    cadena2[4] = '<pre data-line="" class="highlight-height language-c line-numbers">
				<code readonly="true" class="language-c">
					<xmp>#include <stdio.h>

int main() {
    // Declaración e inicialización de una cadena
    char cadena1[] = "Hola, mundo!";

    // Declaración de una cadena y luego inicialización
    char cadena2[10];
    cadena2[0] = 'H';
    cadena2[1] = 'o';
    cadena2[2] = 'l';
    cadena2[3] = 'a';
    cadena2[4] = '\0'; // Agrega el carácter nulo al final

    // Declaración de una cadena con tamaño específico
    char cadena3[20] = "¡Hola!";

    printf("Cadena 1: %s\n", cadena1);
    printf("Cadena 2: %s\n", cadena2);
    printf("Cadena 3: %s\n", cadena3);

    return 0;
}

				
			
'; // Agrega el carácter nulo al final // Declaración de una cadena con tamaño específico char cadena3[20] = "¡Hola!"; printf("Cadena 1: %s\n", cadena1); printf("Cadena 2: %s\n", cadena2); printf("Cadena 3: %s\n", cadena3); return 0; }

Explicación:

Las cadenas de caracteres son esenciales para manejar texto en programas en C. Aquí tienes diferentes formas de declarar e inicializar cadenas:

  • Declaración e Inicialización Directa:

    • Puedes declarar e inicializar una cadena al mismo tiempo. Por ejemplo, char cadena1[] = "Hola, mundo!";. El compilador determinará automáticamente el tamaño basado en la longitud de la cadena de inicialización.
  • Declaración y Luego Inicialización:

    • También puedes declarar una cadena y luego inicializarla asignando caracteres individualmente. Asegúrate de agregar el carácter nulo (\0) al final de la cadena para indicar el final de la cadena.
  • Declaración con Tamaño Específico:

    • Puedes declarar una cadena con un tamaño específico y luego inicializarla. Si la cadena inicial es más corta que el tamaño especificado, se rellena con \0.

Es importante recordar que todas las cadenas en C deben terminar con el carácter nulo (\0).

Funciones estándar de manipulación de cadenas: strcpy, strcat, strlen, strcmp

En C, hay varias funciones estándar que se utilizan para manipular cadenas de caracteres. Aquí están algunas de las más comunes:

  • strcpy(): Copia una cadena en otra.
  • strcat(): Concatena una cadena al final de otra.
  • strlen(): Calcula la longitud de una cadena.
  • strcmp(): Compara dos cadenas.
				
					#include <stdio.h>
#include <string.h>

int main() {
    char destino[20];
    char origen[] = "Hola";
    
    // strcpy(): Copia una cadena en otra
    strcpy(destino, origen);
    printf("strcpy(): %s\n", destino);

    // strcat(): Concatena una cadena al final de otra
    strcat(destino, " Mundo!");
    printf("strcat(): %s\n", destino);

    // strlen(): Calcula la longitud de una cadena
    int longitud = strlen(destino);
    printf("strlen(): %d\n", longitud);

    // strcmp(): Compara dos cadenas
    char cadena1[] = "Hola";
    char cadena2[] = "Hola";
    int comparacion = strcmp(cadena1, cadena2);
    if (comparacion == 0) {
        printf("strcmp(): Las cadenas son iguales\n");
    } else {
        printf("strcmp(): Las cadenas son diferentes\n");
    }

    return 0;
}

				
			

Explicación:

  • strcpy(): Copia el contenido de la cadena origen en la cadena destino.
  • strcat(): Concatena la cadena origen al final de la cadena destino.
  • strlen(): Devuelve la longitud de la cadena.
  • strcmp(): Compara las dos cadenas. Devuelve 0 si son iguales, un número negativo si la primera es menor que la segunda y un número positivo si la primera es mayor que la segunda.

Entrada y salida de cadenas

En C, puedes leer y escribir cadenas de caracteres utilizando las funciones de entrada y salida estándar (printf() y scanf()). Aquí tienes cómo hacerlo:

 
				
					#include <stdio.h>

int main() {
    char cadena[100];

    // Entrada de una cadena
    printf("Ingrese una cadena: ");
    scanf("%s", cadena); // Lee una cadena hasta encontrar un espacio en blanco o un salto de línea
    printf("Cadena ingresada: %s\n", cadena);

    // Salida de una cadena
    printf("Salida de cadena: %s\n", cadena);

    return 0;
}

				
			

Explicación:

  • Entrada de una Cadena:

    • Utilizamos scanf("%s", cadena); para leer una cadena de caracteres desde la entrada estándar. %s indica que estamos leyendo una cadena. Ten en cuenta que scanf() detendrá la lectura al encontrar un espacio en blanco o un salto de línea.
  • Salida de una Cadena:

    • Utilizamos printf("Salida de cadena: %s\n", cadena); para imprimir la cadena en la salida estándar.

Recuerda que scanf() puede ser riesgoso si la entrada del usuario es más larga que el tamaño del buffer. Para evitar desbordamientos de búfer, es recomendable usar fgets() para leer cadenas de manera segura.