Teoria

Introdução

Fala aí, aqui é o Guga do Responde Aí! Tudo bem com você?

Você já parou para pensar se ao invés de armazenarmos apenas um caractere tivéssemos que armazenar uma palavra inteira, uma frase ou quem sabe um texto?

Nesse tópico nós vamos ver como os vetores são tão importantes no armazenamento desse tipo de dado.

Strings

Nós já criamos um vetor de caracteres antes, mas nunca mencionamos que um vetor de caracteres organizados pode se tornar uma palavra!

Dá uma olhadinha na imagem a seguir:

Isso nada mais é do que uma string, ou seja, uma forma textual de armazenar letras, números, pontos, espaços em branco etc. O objetivo é simples, formar palavras, frases, textos e tudo aquilo que de alguma forma precisamos manipular inúmeros caracteres para fazer sentido.

Diferente de outras linguagens, a linguagem de programação C não possui nenhum tipo string padrão, sendo a única forma de fazer esse armazenamento através de um vetor de caracteres.

Por sorte, quando nos referimos a strings formadas por vetores do tipo char existem uma série de macetes que podem ser aplicados!

Leitura de strings

Suponha que nós tenhamos que realizar a leitura de uma string, diferente da maneira com que nós utilizávamos a função scanf(), a leitura de uma string é feita da seguinte forma:

Onde no primeiro parâmetro estamos dizendo para a função de leitura ler todos os tipos de caracteres (incluindo espaços em branco) até encontrar um \n, em outras palavras, tudo o que for digitado antes do usuário aperta enter será armazenado no vetor string.

Vale lembrar que o vetor string possui tamanho 50, ou seja, se aquilo que for digitado extrapolar esse tamanho dizemos que ocorreu um overflow, isso significa que a memória que tinha disponível para aquela ação “estourou”.

E o que acontece quando aquilo que for digitado não suprir os 50 caracteres disponíveis para utilização?

Exemplo ilustrado pela figura a seguir:

A função de leitura nos protege do lixo de memória (que ocorre a partir do índice 4) colocando um terminador de string também conhecido como o caractere especial \0. Isso significa que tudo aquilo que está armazenado após o terminador deve ser ignorado, pois não faz parte efetivamente da string e poderá causar mal funcionamento caso considerado.

De maneira geral, a leitura de uma string é feita da seguinte forma:

Impressão de strings

Por sorte, a impressão de uma string é muito menos complexa que sua leitura, pois a única diferença entre a conhecida utilização da função printf() é o especificador de tipo string conhecido como %s.

De maneira geral, para imprimirmos uma string basta codificarmos o seguinte comando:

E tudo aquilo que está antes do terminador \0 será impresso.

Isso fará com que tudo aquilo que esteja antes do terminado \0 seja impresso, ignorando os posteriores lixos de memória.

Biblioteca string.h

A linguagem C possui uma biblioteca exclusiva para a manipulação de strings, então caso nós tenhamos que utilizar alguma função mais cabulosa, é muito provável que a documentação oficial dessa biblioteca, chamada string.h, tenha informações cruciais para a aplicação dessas funções.

Isso sim é um dica de parceiro!

Agora que já entendemos o que são e como utilizar strings na linguagem C está na hora de resolvermos alguns exercícios de fixação, você não acha?

Te espero na página aqui do ladinho!

Leitura de strings

Impressão de strings

Biblioteca string.h