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.

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