Back
Close

Programação C

MarcoVaz
3,945 views
Previous: Funções em C Next: Cadeia de Caracteres

Cadeia de caracteres (ou string)

  • Uma cadeia de caracteres (string em inglês) é uma sequência de caracteres ou símbolos definida pelo código ASCII.

  • Em linguagem C, uma cadeia de caracteres pode ser tratada como um "Vetor" do tipo char, cujo último elemento é o caractere nulo '\0', ou seja, o primeiro caractere do código ASCII (cujo valor é 0).

  • O caractere nulo é um caractere de controle (ou seja, não exibível) que indica o fim de uma cadeia de caracteres. Assim, uma cadeia composta de n elementos será, na realidade, um vetor de n + 1 elementos do tipo char.

  • Podemos, por exemplo, representar a string "Ola Mundo!" da seguinte maneira: programa


Declaração de Cadeias de caracteres

A declaração de uma string em C é semelhante a declaração de um vetor do tipo char. O número máximo de caracteres que comportará a cadeia será igual ao número de elementos do vetor menos um (reservado para o caractere do final da cadeia), por exemplo, se definirmos uma cadeia de caracteres de tamanho 30, ela conterá 29 caracteres + '\0'.

char Nome_da_tabela[Número_de_elementos]

Inicialização de cadeia de caracteres

  • A inicialização de uma string, ou seja, mover caracteres, pode ser feita de duas maneiras:

    • Mover manualmente os dados (célula por célula), como em um vetor ou
    • Utilizar funções de manipulação de cadeias fornecidas pela biblioteca padrão (String.h).

Exemplo de inicialização manual de cadeia de caracteres (para impressão de cadeia de caracteres com o comando printf devemos utilizar o caracter formatação "%s" :

#include <stdio.h>
int main(){
char Cadeia[12];
Cadeia[0]= 'L';
Cadeia[1]= 'i';
Cadeia[2]= 'n';
Cadeia[3]= 'g';
Cadeia[4]= 'u';
Cadeia[5]= 'a';
Cadeia[6]= 'g';
Cadeia[7]= 'e';
Cadeia[8]= 'm';
Cadeia[9]= ' ';
Cadeia[10]= 'C';
Cadeia[11]= '\0';
printf("%s",Cadeia);
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Outra maneira (mais simples) de inicializarmos uma cadeia de caracteres é na sua declaração, como no exmplo abaixo:

#include <stdio.h>
int main(){
char Cadeia[12] = {'L', 'i', 'n', 'g', 'u', 'a', 'g', 'e', 'm', ' ', 'C', '\0'};
printf("%s",Cadeia);
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

ATENÇÃO

O comando scanf não lê o caracter Enter('\0'), portanto em variáveis do tipo char esse caracter é lido no comando scanf seguinte. Logo, em comandos de leitura de variáveis do tipo char, coloque a função getchar() ou fflush(stdin) após o commando scanf, para solucionar o problema. A função fflush(stdin) limpa o buffer do teclado. Veja o exemplo abaixo:

#include<stdio.h>
int main(){
char vet[10];
int i;

for (i=0; i<10;i++){
    printf("\nentra:");
    scanf("%c",&vet[i]);
    getchar();   // <----- Comente esse comando e veja o que acontece

}
for (i=0; i<10;i++){
    printf("\nvet=:%c", vet[i]);

}

}

Create your playground on Tech.io
This playground was created on Tech.io, our hands-on, knowledge-sharing platform for developers.
Go to tech.io
codingame x discord
Join the CodinGame community on Discord to chat about puzzle contributions, challenges, streams, blog articles - all that good stuff!
JOIN US ON DISCORD
Online Participants