Online C Compiler
Abrir en el compilador

Edición didáctica en español. El código y sus salidas conservan el original.

Cadenas de caracteres en C

Trabaja con el terminador cero, la capacidad del buffer y las funciones de string.h.

Abrir en el compilador

Cadenas de caracteres en C
Trabaja con el terminador cero, la capacidad del buffer y las funciones de string.h.

Una cadena C es una secuencia de caracteres terminada por un byte cero. El buffer necesita espacio para ese terminador además del texto. strlen cuenta caracteres anteriores al terminador; no conoce por sí sola la capacidad del objeto.

fgets recibe la capacidad y puede conservar el salto de línea. Al copiar o concatenar, comprueba el espacio disponible y la terminación. Nunca escribas en un literal de cadena ni uses una entrada sin límite para llenar un buffer fijo.

Compara el contenido con strcmp, no las direcciones con ==. Prueba una cadena vacía, una entrada larga y espacios internos. El procesamiento byte a byte no equivale necesariamente a contar caracteres Unicode.

Código C

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

int main(void) {
    printf("=== C Strings: Declaration & Manipulation ===\n\n");

    // 1. Mutable stack array
    char greeting[32] = "Hello";
    char name[] = "Programmer";

    printf("Initial greeting: %s (Length: %zu)\n", greeting, strlen(greeting));
    printf("Name: %s (Length: %zu)\n", name, strlen(name));

    // 2. Safe string concatenation with snprintf
    char full_message[64];
    snprintf(full_message, sizeof(full_message), "%s, %s! Welcome to C.", greeting, name);
    printf("Concatenated: %s\n", full_message);

    // 3. In-place string mutation
    greeting[0] = 'J'; // "Jello"
    printf("Modified greeting: %s\n", greeting);

    // 4. String comparison
    char word1[] = "apple";
    char word2[] = "banana";
    int cmp = strcmp(word1, word2);
    if (cmp < 0) {
        printf("\"%s\" comes before \"%s\" alphabetically (cmp = %d)\n", word1, word2, cmp);
    }

    // 5. String reversal in-place
    char text[] = "Online C Compiler";
    size_t len = strlen(text);
    for (size_t i = 0; i < len / 2; i++) {
        char temp = text[i];
        text[i] = text[len - 1 - i];
        text[len - 1 - i] = temp;
    }
    printf("Reversed string: %s\n", text);

    return 0;
}
Abrir en el compilador

Salida esperada

=== C Strings: Declaration & Manipulation ===

Initial greeting: Hello (Length: 5)
Name: Programmer (Length: 10)
Concatenated: Hello, Programmer! Welcome to C.
Modified greeting: Jello
"apple" comes before "banana" alphabetically (cmp = -1)
Reversed string: reliPmoC C enilnO

Preguntas frecuentes

¿Por qué el código y la salida siguen en inglés?

Las palabras clave, los identificadores y los textos que verifican las pruebas se conservan para no cambiar el programa. Las explicaciones y los controles están traducidos.