Aula 08 – Strings em C 🔡
Diferente de linguagens como Python ou Java, o C não possui um tipo "String" nativo. Em C, um texto é simplesmente um Vetor de Caracteres (char).
🧵 1. O que é uma String em C?
É um array de char que termina obrigatoriamente com o caractere especial \0 (null terminator). Esse caractere avisa ao computador: "O texto acaba aqui!".
Declaração e Inicialização
#include <stdio.h>
int main() {
// Declaração de string com 20 posições
char nome[20] = "Ricardo";
// O C adiciona o '\0' automaticamente no final de strings entre aspas duplas
printf("Olá, %s!\n", nome); // %s é o formatador de String
return 0;
}
📥 2. Lendo Strings com Espaços
O scanf("%s", ...) para de ler assim que encontra um espaço. Para ler um nome completo ou uma frase, usamos o comando fgets.
Exemplo de Código:
char nomeCompleto[50];
printf("Digite seu nome: ");
fgets(nomeCompleto, 50, stdin); // Nome, tamanho, entrada padrão (teclado)
📚 3. A Biblioteca <string.h>
Para manipular textos, usamos funções prontas desta biblioteca:
strlen(): Retorna o tamanho da string (quantidade de letras).strcpy(): Copia uma string para outra.strcat(): Junta (concatena) duas strings.strcmp(): Compara se duas strings são iguais (retorna 0 se forem iguais).
💻 Exemplo Prático: Comparação de Senha
#include <stdio.h>
#include <string.h>
int main() {
char senha[20] = "segredo123";
char tentativa[20];
printf("Digite a senha: ");
scanf("%s", tentativa);
if (strcmp(senha, tentativa) == 0) {
printf("Acesso Garantido!\n");
} else {
printf("Senha Incorreta.\n");
}
return 0;
}
🚀 Mini-Projeto da Aula: "Criptografia Simples"
Objetivo: Criar um programa que receba uma palavra e a "criptografe" somando 1 ao valor ASCII de cada caractere (ex: 'A' vira 'B', 'B' vira 'C').
📝 Exercícios de Fixação
- Crie um programa que peça o nome do usuário e imprima quantas letras esse nome tem.
- Escreva um programa que receba duas palavras e as junte em uma única variável usando
strcat. - Desafio: Como você faria para imprimir uma string de trás para frente usando um laço
fore ostrlen?