Menu
Coddy logo textTech

El terminador nulo

Parte de la sección Lógica y Flujo del Journey de C de Coddy. Lección 13 de 63.

Has aprendido que las cadenas en C son arreglos de caracteres, pero hay un detalle crucial que hace que funcionen correctamente: cada cadena de C debe terminar con un carácter especial llamado el terminador nulo, escrito como \0.

El terminador nulo es un carácter con el valor ASCII de cero que marca el final de una cadena. Sin él, funciones como printf no sabrían dónde termina su cadena y continuarían leyendo la memoria hasta que encuentren aleatoriamente un byte cero, produciendo a menudo una salida de basura.

char word[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
// El \0 le dice a C: "The string ends here"

Cuando inicializas una cadena con un literal como "Hello", C añade automáticamente el terminador nulo por ti. Pero cuando construyes manualmente una cadena carácter por carácter, debes recordar añadir \0 al final.

Este terminador nulo es la razón por la cual una palabra de 5 caracteres como "Hello" necesita un arreglo de caracteres de 6 elementos: un espacio extra para el \0. Comprender este concepto es esencial porque es la base de cómo todas las funciones de cadenas de C determinan dónde comienzan y terminan las cadenas.

challenge icon

Desafío

Fácil

Escribe un programa en C que demuestre cómo crear y trabajar con cadenas mediante la inicialización manual carácter por carácter con una terminación nula adecuada. Tu programa debe:

  1. Declarar un arreglo de caracteres llamado name con exactamente 5 elementos
  2. Inicializar manualmente el arreglo name carácter por carácter para escribir "John", con una terminación nula adecuada:
    • Primer elemento: 'J'
    • Segundo elemento: 'o'
    • Tercer elemento: 'h'
    • Cuarto elemento: 'n'
    • Quinto elemento: '\0' (terminador nulo)
  3. Declarar un segundo arreglo de caracteres llamado city con exactamente 7 elementos
  4. Inicializar manualmente el arreglo city carácter por carácter para escribir "Boston", con una terminación nula adecuada:
    • Usar asignaciones individuales de caracteres para 'B', 'o', 's', 't', 'o', 'n' y '\0'
  5. Imprimir ambas cadenas usando printf con el especificador de formato %s
  6. Demostrar qué sucede sin una terminación nula creando un tercer arreglo de caracteres llamado test con 4 elementos
  7. Inicializar test únicamente con los caracteres 'A', 'B', 'C', 'D' (sin terminador nulo)
  8. Imprimir el arreglo test usando %s para mostrar una salida impredecible

Tu salida debe mostrar los resultados con el siguiente formato:

Name: John
City: Boston
Test without null terminator: ABCD[unpredictable characters]

Este desafío pone a prueba tu comprensión de la construcción manual de cadenas, la importancia crítica del terminador nulo '\0' en las cadenas de C y cómo printf con %s depende de encontrar el terminador nulo para saber dónde termina la cadena.

Pruébalo tú mismo

#include <stdio.h>

int main() {
    // TODO: Escribe tu código aquí
    // Declara e inicializa los arreglos de caracteres como se especifica
    
    // Imprime los resultados
    
    return 0;
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y Flujo

Practica por tu cuenta: Compilador de C online