Strings em C: Dominando Declaração, Inicialização e Entrada/Saída
Strings em C
Este tutorial aborda os fundamentos das strings em C: declaração, inicialização, entrada/saída, uso de funções, ponteiros e funções essenciais da biblioteca padrão.
Em C, uma string é um array de caracteres terminado por um byte nulo \0. Por exemplo:
char c[] = "string em C"; O compilador adiciona automaticamente \0 a um literal de string, tornando-o uma string C válida.
Como declarar uma string?
Strings são declaradas como arrays de caracteres. Por exemplo:
char s[5]; Isso declara um buffer que pode armazenar até 4 caracteres mais o terminador \0.
Como inicializar strings?
Vários estilos de inicialização estão disponíveis:
char c[] = "abcd"; char c[50] = "abcd"; char c[] = {'a', 'b', 'c', 'd', '\0'}; char c[5] = {'a', 'b', 'c', 'd', '\0'}; Cuidado com estouro de buffer: char c[5] = "abcde"; tenta armazenar seis caracteres (incluindo \0) em um array de cinco bytes e deve ser evitado.
Atribuindo valores a strings
Arrays não podem ser atribuídos após a declaração. Em vez disso, use strcpy():
char c[100]; strcpy(c, "Programação em C"); Nota: Atribuição direta como c = "Programação em C"; causa erro de compilação.
Lendo strings do usuário
Use scanf() para entrada delimitada por espaços:
#include <stdio.h> int main() { char nome[20]; printf("Digite o nome: "); scanf("%s", nome); printf("Seu nome é %s.", nome); return 0; } Saída
Digite o nome: Dennis Ritchie Seu nome é Dennis.
Apenas a primeira palavra é capturada porque scanf() para no espaço em branco. O nome do array decai para um ponteiro, então nome é passado diretamente.
Como ler uma linha inteira?
Use fgets() e puts():
#include <stdio.h> int main() { char nome[30]; printf("Digite o nome: "); fgets(name, sizeof(nome), stdin); printf("Nome: "); puts(nome); return 0; } Saída
Digite o nome: Tom Hanks Nome: Tom Hanks
fgets() lê até sizeof(nome)-1 caracteres, incluindo espaços. Também mantém a nova linha final, que puts() imprime.
Nota: gets() é obsoleta e foi removida do padrão C porque pode estourar buffers.
Passando strings para funções
Strings são passadas para funções como arrays. Exemplo:
#include <stdio.h> void exibirString(char str[]); int main() { char str[50]; printf("Digite a string: "); fgets(str, sizeof(str), stdin); exibirString(str); return 0; } void exibirString(char str[]) { printf("Saída da string: "); puts(str); } Strings e ponteiros
Nomes de strings decaem para ponteiros, permitindo aritmética de ponteiros:
#include <stdio.h> int main(void) { char nome[] = "Harry Potter"; printf("%c", *nome); // H printf("%c", *(nome+1)); // a printf("%c", *(nome+7)); // o char *ptrNome = nome; printf("%c", *ptrNome); // H printf("%c", *(ptrNome+1)); // a printf("%c", *(ptrNome+7)); // o } Funções de string comumente usadas
- strlen() – retorna o comprimento da string (excluindo o terminador nulo).
- strcpy() – copia uma string para outra.
- strcmp() – compara duas strings lexicograficamente.
- strcat() – concatena duas strings.
Linguagem C
- Dominando Strings em C#: Fundamentos, Operações e Técnicas Avançadas
- Dominando Namespaces em C#: Organização, Escopo e Boas Práticas
- Como Passar Arrays para Funções em C++: Guia Prático
- Dominando Strings em Java: Criação, Métodos e Boas Práticas
- Dominando Representações String em Enums Java
- Dominando Funções de String em C++: strcpy, strcat, strlen, strcmp – Exemplos Práticos
- Strings em C Facilitadas: Declaração, Entrada, Saída e Funções da Biblioteca
- Domine Operações com Strings em Python: Replace, Join, Split, Reverse e Conversão de Case
- Domine a Programação em C: Tutorial Completo para Iniciantes
- Classe String em Java: Dominando a Criação e Manipulação de Strings