Menu
Coddy logo textTech

O Terminador Nulo

Parte da seção Logic & Flow do Journey de C da Coddy — lição 13 de 63.

Você aprendeu que strings em C são arrays de caracteres, mas há um detalhe crucial que as faz funcionar corretamente: toda string em C deve terminar com um caractere especial chamado terminador nulo, escrito como \0.

O terminador nulo é um caractere com o valor ASCII zero que marca o fim de uma string. Sem ele, funções como printf não saberiam onde sua string termina e continuariam lendo a memória até encontrarem aleatoriamente um byte zero, frequentemente produzindo uma saída de lixo.

char word[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
// O \0 diz ao C: "The string ends here"

Quando você inicializa uma string com um literal como "Hello", o C adiciona automaticamente o terminador nulo para você. Mas quando você constrói manualmente uma string caractere por caractere, você deve se lembrar de adicionar \0 ao final.

Este terminador nulo é o motivo pelo qual uma palavra de 5 caracteres como "Hello" precisa de um array de caracteres de 6 elementos - um espaço extra para o \0. Compreender este conceito é essencial porque é a base de como todas as funções de string em C determinam onde as strings começam e terminam.

challenge icon

Desafio

Fácil

Escreva um programa em C que demonstre a criação e o trabalho com strings usando a inicialização manual caractere por caractere com a terminação nula adequada. Seu programa deve:

  1. Declarar um array de caracteres chamado name com exatamente 5 elementos
  2. Inicializar manualmente o array name caractere por caractere para soletrar "John" com a terminação nula adequada:
    • Primeiro elemento: 'J'
    • Segundo elemento: 'o'
    • Terceiro elemento: 'h'
    • Quarto elemento: 'n'
    • Quinto elemento: '\0' (terminador nulo)
  3. Declarar um segundo array de caracteres chamado city com exatamente 7 elementos
  4. Inicializar manualmente o array city caractere por caractere para soletrar "Boston" com a terminação nula adequada:
    • Use atribuições de caracteres individuais para 'B', 'o', 's', 't', 'o', 'n', e '\0'
  5. Imprimir ambas as strings usando printf com o especificador de formato %s
  6. Demonstrar o que acontece sem a terminação nula criando um terceiro array de caracteres chamado test com 4 elementos
  7. Inicializar test apenas com os caracteres 'A', 'B', 'C', 'D' (sem terminador nulo)
  8. Imprimir o array test usando %s para mostrar uma saída imprevisível

Sua saída deve exibir os resultados no seguinte formato:

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

Este desafio testa sua compreensão da construção manual de strings, a importância crítica do terminador nulo '\0' em strings C, e como o printf com %s depende de encontrar o terminador nulo para saber onde a string termina.

Folha de consulta

Strings em C são arrays de caracteres que devem terminar com um terminador nulo \0 para marcar o fim da string.

O terminador nulo tem o valor ASCII zero e informa a funções como printf onde a string termina:

char word[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
// O \0 diz ao C: "A string termina aqui"

Ao usar literais de string como "Hello", o C adiciona automaticamente o terminador nulo. Ao construir strings caractere por caractere, você deve adicionar manualmente o \0.

Uma string precisa de um elemento extra no array para o terminador nulo - "Hello" (5 caracteres) requer um array de 6 elementos.

Experimente você mesmo

#include <stdio.h>

int main() {
    // TODO: Escreva seu código aqui
    // Declare e inicialize os arrays de caracteres conforme especificado
    
    // Imprima os resultados
    
    return 0;
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Logic & Flow