Menu
Coddy logo textTech

Strings como Arrays de char

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

Em C, não existe um tipo de dado string integrado como você pode encontrar em outras linguagens de programação. Em vez disso, as strings são representadas como arrays de caracteres. Este conceito fundamental é essencial para entender como o texto é manipulado na programação C.

Uma string em C é simplesmente uma sequência de caracteres armazenada em locais de memória consecutivos. Para criar uma string, você declara um array de caracteres que seja grande o suficiente para conter todos os caracteres de que você precisa, além de um espaço extra para um caractere terminador especial.

char greeting[6];  // Pode conter 5 caracteres + terminador
char message[20]; // Pode conter até 19 caracteres + terminador

A maneira mais conveniente de trabalhar com strings é inicializá-las diretamente com um literal de string ao declarar o array. O C lida automaticamente com os detalhes do armazenamento de cada caractere no array:

char greeting[6] = "Hello";
// Isso armazena: 'H', 'e', 'l', 'l', 'o', mais um terminador especial

Você também pode deixar o C determinar automaticamente o tamanho do array omitindo a especificação de tamanho ao inicializar com um literal de string:

char greeting[] = "Hello";  // O C define automaticamente este tamanho como 6

Entender que strings são arrays de caracteres é crucial porque explica como C lida com dados de texto e prepara você para trabalhar com funções de manipulação de strings que operam nesses arrays de caracteres.

challenge icon

Desafio

Fácil

Escreva um programa em C que demonstre a criação e o trabalho com arrays de caracteres para armazenar strings. Seu programa deve:

  1. Declarar um array de caracteres chamado greeting com espaço suficiente para conter a string "Hello" (lembre-se de considerar o terminador nulo)
  2. Inicializar o array greeting com a string literal "Hello"
  3. Declarar um segundo array de caracteres chamado message com 20 elementos
  4. Inicializar o array message com a string literal "Welcome"
  5. Declarar um terceiro array de caracteres chamado word sem especificar o tamanho, e deixar o C determinar automaticamente o tamanho inicializando-o com "Programming"
  6. Imprimir todas as três strings usando printf com o especificador de formato %s
  7. Imprimir o tamanho de cada array usando sizeof para demonstrar quanta memória cada array de caracteres ocupa

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

greeting: Hello
message: Welcome
word: Programming
Size of greeting: 6
Size of message: 20
Size of word: 12

Este desafio testa sua compreensão de como declarar arrays de caracteres para armazenar strings, como as strings literais são automaticamente terminadas em nulo quando atribuídas a arrays de caracteres e como o C calcula automaticamente os tamanhos dos arrays quando você omite a especificação do tamanho durante a inicialização.

Folha de consulta

Em C, as strings são representadas como arrays de caracteres. Não existe um tipo de dado string integrado.

Declare um array de caracteres com um tamanho especificado:

char greeting[6];  // Pode conter 5 caracteres + terminador
char message[20]; // Pode conter até 19 caracteres + terminador

Inicialize com uma string literal:

char greeting[6] = "Hello";
// Isso armazena: 'H', 'e', 'l', 'l', 'o', mais um terminador especial

Deixe o C determinar automaticamente o tamanho do array:

char greeting[] = "Hello";  // O C define automaticamente este tamanho como 6

Imprima strings usando o especificador de formato %s:

printf("%s", greeting);

Obtenha o tamanho do array usando sizeof:

sizeof(greeting)  // Retorna o total de bytes ocupados pelo array

Experimente você mesmo

#include <stdio.h>

int main() {
    // TODO: Escreva seu código aqui
    // Declare e inicialize os arrays de caracteres conforme especificado no desafio
    
    // Imprime as strings e seus tamanhos
    printf("greeting: %s\n", greeting);
    printf("message: %s\n", message);
    printf("word: %s\n", word);
    printf("Size of greeting: %lu\n", sizeof(greeting));
    printf("Size of message: %lu\n", sizeof(message));
    printf("Size of word: %lu\n", sizeof(word));

    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