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 + terminadorA 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 especialVocê 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 6Entender 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.
Desafio
FácilEscreva um programa em C que demonstre a criação e o trabalho com arrays de caracteres para armazenar strings. Seu programa deve:
- Declarar um array de caracteres chamado
greetingcom espaço suficiente para conter a string "Hello" (lembre-se de considerar o terminador nulo) - Inicializar o array
greetingcom a string literal "Hello" - Declarar um segundo array de caracteres chamado
messagecom 20 elementos - Inicializar o array
messagecom a string literal "Welcome" - Declarar um terceiro array de caracteres chamado
wordsem especificar o tamanho, e deixar o C determinar automaticamente o tamanho inicializando-o com "Programming" - Imprimir todas as três strings usando
printfcom o especificador de formato%s - Imprimir o tamanho de cada array usando
sizeofpara 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: 12Este 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 + terminadorInicialize com uma string literal:
char greeting[6] = "Hello";
// Isso armazena: 'H', 'e', 'l', 'l', 'o', mais um terminador especialDeixe o C determinar automaticamente o tamanho do array:
char greeting[] = "Hello"; // O C define automaticamente este tamanho como 6Imprima 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 arrayExperimente 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;
}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
1Fundamentos de Ponteiros
O que é um Ponteiro?Declarando PonteirosO Operador de Endereço (&)O Operador de Desreferência (*)Ponteiros NULLRecapitulação: Fundamentos de Ponteiros4Projeto: Utilitário de Texto Simples
Visão Geral do ProjetoContando Caracteres2Ponteiros e Arrays
Nomes de Arrays como PonteirosElementos de Array - PonteirosAritmética de PonteirosComparando PonteirosRecapitulação: Percorrendo Arrays com Ponteiros5Ponteiros e Funções
Passagem por ValorPassando Ponteiros para FunçõesModificando Variáveis via PonteirosUm Exemplo Clássico: SwapPassando Arrays para FunçõesRecapitulação: Ponteiros como Argumentos3Arrays de Caracteres e Strings
Strings como Arrays de charO Terminador NuloEntrada de Strings com scanfUsando strlen()Usando strcpy()Usando strcat()Usando strcmp()Recapitulação: Funções Básicas de Strings6Gerenciamento de Memória
Memória Stack vs. HeapAlocação Dinâmica - malloc()Usando sizeof() para AlocaçãoVerificando Falhas de AlocaçãoLiberando Memória com free()Alocando com calloc()Recapitulação: Array Dinâmico9Projeto: Cadastro Simples de Contatos
Projeto: Definir a Struct de ContatoFunção para Criar um Contato