Buscar

Aula 08 Linguagem de Programação I

Prévia do material em texto

Aula
08Linguagem de Programação I - UNIGRAN
STRINGS
Nesta aula veremos como criar e manipular, que são vetores de 
char na linguagem C.
Veremos o tipo de dados string de uma forma especial por ele 
ser diferente dos demais tipos. Na verdade as strings são vetores do tipo 
char que armazenam uma cadeia de caracteres. Quando declaramos 
uma variável do tipo char, definimos o tamanho dela, o nome da variável 
e a quantidade de caracteres, essa última informação não é obrigatória, 
fica a critério do programador. Mas quando o tamanho da string não 
for informado é estritamente necessário inicializar a variável com 
algum valor (texto), porque quando o programa iniciar ele vai contar a 
quantidade de caracteres que o texto possui e vai atribuir esse valor ao 
tamanho da sua variável. Se isso não for feito a string terá o tamanho 
1 e passará a ser uma variável do tipo char, sem ser um vetor de char.
String = vetor de char
Nesta aula, veremos as principais funções de manipulação de strings:
• Função strcpy
• Função strcat
• Função strcmp
• Função strlen
• Função toupper
• Função tolower
143
Linguagem de Programação I - UNIGRAN
Objetivos de aprendizagem
Ao término desta aula, vocês serão capazes de:
• criar, alterar, localizar, substituir, contatenar strings através das funções 
que são fornecidas pela linguagem C;
• identificar a melhor função de acordo com o problema proposto;
• aprender a declarar e inicializar strings;
• entender como ficam armazenados os valores das strings.
Seções de estudo
• Seção 1 – Declarar, inicializar e atribuir valores a strings 
• Seção 2 – Função fgets
• Seção 3 – Função strcpy
• Seção 4 – Função strcat
• Seção 5 – Função strcmp
• Seção 6 – Função strlen
• Seção 7 – Função toupper
• Seção 8 – Função tolower
Seção 1 – Declarar, inicializar e atribuir valores a strings
A representação de uma string é muito semelhante à representação de um 
vetor, os dois são criados do mesmo jeito, e podem ser inicializados do mesmo 
jeito. Então o que diferencia um vetor de uma string? Na verdade, ao final da 
string (na última posição) existe um caracter nulo definido por \0, é ele quem 
indica que um determinado vetor é uma string.
Sintaxe: 
char nome_da_string[tamanho_da_string + 1]
A figura abaixo representa uma string de tamanho 20 com o texto “Vetor 
de char” armazenado nela. Note que o texto possui 13 caracteres (os caracteres em 
144
Linguagem de Programação I - UNIGRAN
branco também são computados), e é terminada pelo caracter “\0” que vem logo 
depois da sequencia de caracteres, indicando o final da string. Os caracteres que 
não receberam valores, permanecendo em branco, não afetam a estrutura da string.
Declarando uma string
Exemplo 1:
 char texto[] = “LIVRO”;
Nesse exemplo estamos criando uma variável do tipo string e 
inicializando-a com o conteúdo “LIVRO”. Podemos dizer, que o programa 
armazenou essa string da seguinte forma:
texto[0] = ‘L’
texto [1] = ‘I’
texto [2] = ‘V’
texto [3] = ‘R’
texto [4] = ‘O’
texto [5] = ‘\0’
Como o tamanho da string não foi declarado na sua criação, o programa 
identificou que ela possui seis caracteres, pois foi contado o número de caracteres 
da palavra LIVRO e incluído mais um para o caracter nulo (\0). Somando-se, ao 
final, seis caracteres.
Exemplo 2:
char texto[] = {‘L’, ‘I’, ‘V’, ‘R’, ‘O’, ‘\0’};
Nesse exemplo é possível visualizar que cada um dos caracteres foi 
inserido individualmente na variável texto. 
Os caracteres serão armazenados da mesma maneira que no Exemplo 1.
FIGURA 8.1 – Ilustração de uma string de tamanho 20
Fonte: criação nossa
DICA
Ao defi nir o tamanho de uma string (vetor de caracteres), não esqueça de computar 
uma posição a mais, para armazenar o caracter nulo "\0".
145
Linguagem de Programação I - UNIGRAN
Exemplo 3:
char texto[15] ;
No exemplo 3, cria-se a variável texto do tipo char e de tamanho 15, mas 
nenhum valor é atribuído à ela na sua criação, portanto ela não foi inicializada.
Exemplo 4:
char texto[10] = “LIVRO” ;
A diferença deste exemplo e do exemplo 1, é que neste, estamos informando 
o tamanho da variável texto. O resultado será o mesmo, apenas neste caso, será 
possível, no decorrer do programa, inserir um texto que tenha até nove caracteres.
É importante saber que para atribuir um valor a uma string não podemos 
usar o operador de atribuição = como usamos em outros tipos de dados. Só é 
possível usar esse operador quando estamos inicializando a variável, mas depois 
que ela já foi inicializada não podemos mais atribuir valores usando esse operador.
Seção 2 – Função fgets()
A função fgets é utilizada para ler uma cadeia de caracteres (string), ela lê 
uma string e armazena em uma variável, colocando o caracter \0 no final desta string.
Depois de lido o valor do teclado, a função fgets insere "automaticamente", 
no final da string o caracter "\n" antes de inseri o caracter "\0". Isto acontece 
porque a tecla ENTER também é entendida como um caracter. Deste modo, 
sempre haverá uma quebra de linha no final da string que é lida através desta 
função. Mais a frente, vou ensinar uma técnica para remover este caracter, quando 
houver a necessidade.
Biblioteca: 
stdio.h ou cstdio
Sintaxe:
 fgets(variavel, tamanho, stdin);
Onde:
variável – é a variável que vai receber a string informada pelo usuário.
146
Linguagem de Programação I - UNIGRAN
tamanho – diz respeito ao número de caracteres que será informado. O 
tamanho é utilizado para evitar que o usuário informe um texto maior do que o 
tamanho que foi definido para a variável. Isto não impede que ele informe um 
texto maior, mas a variável vai considerar apenas os caracteres que não excederem 
o seu tamanho.
stdin – a função fgets é comumente utilizada para ler caracteres de 
arquivos (do tipo texto), então usamos stdin para informar que os dados vêm do 
teclado, já que ele (o teclado) é entendido pela linguagem C como um arquivo 
padrão de entrada.
Vamos ver um exemplo?
Exemplo: Crie um programa que leia um nome informado pelo usuário 
e mostre uma mensagem de boas vindas ao usuário seguido do nome informado.
A tela de saída do programa visto na figura 8.2 pode ser vista na figura 
abaixo, depois de informado o seguinte nome: “Regiane Marcon”
FIGURA 8.2 - Utilização da função fgets
Fonte: criação nossa
FIGURA 8.3 – Tela de saída do programa representado pela fi gura 8.2
Fonte: criação nossa
147
Linguagem de Programação I - UNIGRAN
Seção 3 – Função strcpy()
Essa função é a mais comum e a mais utilizada dentre as funções de 
manipulação de string. Ela é utilizada para atribuir um valor à uma string, já que 
isto não é possível apenas utilizando o operador de atribuição “=”. 
O valor de atribuição, pode ser uma variável do tipo char (vetor de char) 
ou uma constante de texto, neste segundo caso, o texto deve estar entre aspas duplas.
Biblioteca: 
string.h ou cstring
Sintaxe:
strcpy(variavel, valor);
Onde:
variável – diz respeito a variável que vai receber o texto que está sendo atribuído
valor – diz respeito ao valor (texto ou variável) que está sendo atribuído 
a variável em questão.
Exemplo: Criar um programa que contenha uma variável do tipo string 
de tamanho quinze, e que receba os seguintes valores no decorrer do programa: 
“Linguagem”, “Programacao”, “Programa em C”.
FIGURA 8.4 - Utilização da função strcpy
Fonte: criação nossa
148
Linguagem de Programação I - UNIGRAN
Seção 4 – Função strcat()
Essa função é utilizada para concatenar duas strings. Ela adiciona uma 
string no final da outra. 
Esta função trabalha com duas strings, sendo que junta as duas strings na 
primeira (a da esquerda).
Biblioteca: 
string.h ou cstring
Sintaxe:
strcat(variável_1, texto);
Onde:
variável_1 – diz respeito a variável que vai receber o resultadoda 
concatenação
texto – diz respeito à variável ou constante cujo valor será obtido para 
ser concatenado à outra variável.
Exemplo: Criar um programa tenha o nome e o sobrenome de uma 
pessoa. Juntar os dois nomes em uma variável (nome completo) e exibir na tela 
de saída do programa. 
FIGURA 8.5 – Tela de saída do programa representado pela fi gura 8.4
Fonte: criação nossa
149
Linguagem de Programação I - UNIGRAN
Veja que o nome e o sobrenome ficaram grudados, sem nenhum espaço em 
branco entre eles, isto porque, a concatenação apenas junta os textos. Mas e se for 
preciso colocar um espaço entre os nomes? Como fazer? Veja o exemplo abaixo:
Explicando o programa:
• Linha 6: cria-se a variável nomecompleto que vai receber os nomes 
concatenados.
FIGURA 8.6 - Utilização da função strcat
Fonte: criação nossa
FIGURA 8.7 – Tela de saída do programa representado pela fi gura 8.6
Fonte: criação nossa
FIGURA 8.8 - Utilização da função strcat – inserindo espaço entre os nomes
Fonte: criação nossa
150
Linguagem de Programação I - UNIGRAN
• Linha 7: copia-se o conteúdo da variável nome para a variável 
nomecompleto.
• Linha 8: concatena-se a variável nomecompleto com o texto “ “. Isto para 
que haja um espaço entre os nomes.
• Linha 9: concatena-se o sobrenome com o nomecompleto. Será adicionado 
no final, e depois do espaço que foi adicionado antes.
Seção 5 – Função strcmp()
Essa função é usada para comparar duas strings. Ela compara cada 
caracter das strings um a um. Quando as strings são iguais, o retorno dessa função 
é zero, quando a primeira string é menor do que a segunda o retorno é um valor 
negativo, e quando o valor da primeira string é maior do que a segunda o retorno 
será um valor positivo. 
Biblioteca: 
string.h ou cstring
FIGURA 8.9 – Tela de saída do programa representado pela fi gura 8.8
Fonte: criação nossa
151
Linguagem de Programação I - UNIGRAN
Sintaxe:
strcmp(variável_1, texto);
Onde:
variável_1 – diz respeito a variável de comparação.
texto – diz respeito à variável ou constante cujo valor será comparado 
com a variável_1.
Exemplo: Criar um programa que leia dois nome e mostre-os em ordem 
crescente. 
Se os valores informados forem, respectivamente: Maria e Jose. A saída 
do programa será como na figura abaixo:
FIGURA 8.10 - Utilização da função strcmp
Fonte: criação nossa
FIGURA 8.11 – Tela de saída do programa representado pela fi gura 8.10
Fonte: criação nossa
152
Linguagem de Programação I - UNIGRAN
Explicando o programa: como sabemos que o resultado da comparação 
utilizando strcmp tem três possíveis valores: 0, 1 ou -1. Sabemos também que o 
resultado será 0 quando as duas strings forem iguais; será 1 quando a string da 
esquerda possui caracteres “maiores” do que a da direita e que o resultado será -1 
quando a string da direita possui caracteres “maiores”. Dadas estas informações, 
foi feita apenas a codificação utilizando-se de alguns ifs e elses para que o 
resultado de strcmp fosse comparado, e assim, exibimos os valores das variáveis 
de modo que elas fiquem em ordem crescente.
Seção 6 – Função strlen()
Essa função é utilizada para saber quantos caracteres uma string possui, 
lembrando que uma string é um vetor do tipo char e que o último caractere é o \0. 
Essa função calcula o número de caracteres ocupados no vetor, sem 
contar o caracter \0.
Biblioteca: 
string.h ou cstring
Sintaxe:
strlen(variável_1);
Onde:
variável_1 – diz respeito a variável cujo tamanho está sendo computado.
Exemplo: Criar um programa que tenha uma string de tamanho 30 e leia um 
valor para ela. Ao final, mostre o número de caracteres que a string informada possui.
FIGURA 8.12 - Utilização da função strlen
Fonte: criação nossa
153
Linguagem de Programação I - UNIGRAN
Depois de informada a string “livro”, note que o tamanho que é mostrado 
na tela de saída do programa (representado pela figura abaixo) é seis, mas a string 
possui cinco caracteres apenas. Isto ocorre, porque na função fgets, quando damos 
o ENTER para finalizar a entrada de dados, a string recebe um “\n” antes do “\0”. 
Lembrando que na linguagem C, o ENTER corresponde ao caracter “\n”.
Vamos ver agora, um programa que elimina o caracter "\n" que é inserido 
automaticamente no final da string lida quando utilizamos a função fgets.
Observe na figura abaixo que o tamanho da string "livro" mudou para 
cinco, que é realmente o seu tamanho. 
FIGURA 8.13 – Tela de saída do programa representado pela fi gura 8.12
Fonte: criação nossa
FIGURA 8.14 - Utilização da função strlen para retirar o caracter "\n" do fi nal da string
Fonte: criação nossa
154
Linguagem de Programação I - UNIGRAN
Seção 7 – Função toupper()
Essa função é utilizada para modificar um caracter para o caracter 
maiúsculo equivalente. Sempre que necessário é possível alterar um caracter de 
minúsculo para maiúsculo utilizando-se a função toupper. Mas preste atenção, 
com esta função é possível modificar um caracter por vez para maiúsculo.
Biblioteca: 
ctype.h 
Sintaxe:
variavel_1 = toupper(variavel_2);
Onde:
variável_1 – diz respeito a variável que vai receber o caracter modificado. 
Esta variável, pode ser a mesma cujo valor deve ser modificado. Exemplo: 
variavel_1 = toupper(variavel_1).
variável_1 – diz respeito a variável cujo valor será modificado.
Exemplo: Criar um programa que tenha um caracter, cujo valor deve ser 
modificado para maiúsculo.
FIGURA 8.15 – Tela de saída do programa representado pela fi gura 8.14
Fonte: criação nossa
155
Linguagem de Programação I - UNIGRAN
Veja na tela de saída do programa visto na figura 8.16 na figura abaixo, 
e observe que o caracter "g" foi modificado para "G".
Vamos criar agora, um programa que modifique apenas o primeiro 
caracter de uma string para maiúsculo. O programa apresentado pela figura 
abaixo, faz o que está sendo pedido. 
FIGURA 8.16 - Utilização da função toupper - modifi cando um caracter
Fonte: criação nossa
FIGURA 8.17 – Tela de saída do programa representado pela fi gura 8.16
Fonte: criação nossa
FIGURA 8.18 - Utilização da função toupper - modifi cando o primeiro caracter de uma string
Fonte: criação nossa
156
Linguagem de Programação I - UNIGRAN
Seção 8 – Função tolower()
Ao contrário da função toupper, esta função é utilizada para modificar 
um caracter para minúsculo. Sempre que necessário é possível alterar um caracter 
de maiúsculo para minúsculo utilizando-se a função tolower. Mas preste atenção, 
com esta função é possível modificar apenas um caracter por vez para minúsculo.
Biblioteca: 
ctype.h 
Sintaxe:
variavel_1 = tolower(variavel_2);
Onde:
variável_1 – diz respeito a variável que vai receber o caracter modificado. 
Esta variável, pode ser a mesma cujo valor deve ser modificado. Exemplo: 
variavel_1 = tolower(variavel_1).
variável_1 – diz respeito a variável cujo valor será modificado.
Exemplo: Criar um programa que tenha um caracter, cujo valor deve ser 
modificado para minúsculo.
FIGURA 8.19 – Tela de saída do programa representado pela fi gura 8.18
Fonte: criação nossa
157
Linguagem de Programação I - UNIGRAN
Retomando a conversa inicial
• Seção 1 – Declarar, inicializar e atribuir valores a strings
Descobrimos como criar variáveis do tipo char, e como inicializá-las. 
Vimos que as ditas strings em linguagem C, são vetores de caracteres (char), e 
que armazenam cada um dos seus caracteres em uma posição deste vetor.
• Seção 2 – Função fgets
Esta função facilita a leitura de strings em C, pois ela tem um limitador 
que não permite que a variável que está recebendo o valor, receba um texto maior 
FIGURA 8.20 - Utilização da função tolower - modifi cando um caracter
Fonte: criação nossa
FIGURA 8.21 – Tela de saída do programa representadopela fi gura 8.18
Fonte: criação nossa
Vamos relembrar um pouco do que vimos na aula 8?
158
Linguagem de Programação I - UNIGRAN
do que o seu tamanho (aquele que foi definido na sua criação). Poderíamos usar 
scanf e cin, mas acontece que estas duas estruturas quando encontram um espaço 
em branco no texto, desconsideram o que vem depois, dificultando a leitura de 
um nome, por exemplo.
• Seção 3 – Função strcpy
Esta função copia um texto ou o valor de uma variável para outra variável. 
Lembrando que para atribuir um valor à uma string não podemos simplesmente 
usar o operador “=” como fazemos com os outros tipos de variáveis.
• Seção 4 – Função strcat
Esta função concatena uma string à outra, ela junta a segunda string 
exatamente no final da primeira, sendo assim, a primeira string ficará com o seu 
conteúdo mais o conteúdo da segunda string.
• Seção 5 – Função strcmp
Compara os caracteres ASCII de duas strings e identifica quais são 
“maiores”. Utilizando-se essa função, é possível colocar uma lista de nomes em 
ordem alfabética, por exemplo.
• Seção 6 – Função strlen
Essa função consegue contar o número de caracteres que uma string 
possui. Ela retorna um valor inteiro que refere-se ao tamanho da string.
• Seção 7 – Função toupper
Esta função converte um caracter para o seu maiúsculo equivalente. Ela 
manipula caracteres, e não strings, portanto para modificar uma string, é preciso 
modificar cada um dos seus caracteres individualmente.
• Seção 8 – Função tolower
Esta função converte um caracter para o seu minúsculo equivalente. Ela 
manipula caracteres, e não strings, portanto para modificar uma string, é preciso 
modificar cada um dos seus caracteres individualmente.
159
Linguagem de Programação I - UNIGRAN
Sugestões de leituras e sites
Leituras
Leia o capítulo 6 do livro: Treinamento em linguagem C++ - Módulo 1.
Sites
• http://www.linguagemc.xpg.com.br/strings.html
Autoavaliação
Veja se aprendeu a Aula 05 respondendo ao questionário auto-avaliativo. Depois confi ra 
o resultado das respostas, que está disponível na ferramenta Arquivos da plataforma.
1. Uma string é um vetor de char.
( ) Verdadeiro ( ) Falso
2. O tamanho do string deve ser defi nido na sua declaração.
( ) Verdadeiro ( ) Falso
3. A função fgets lê uma string do teclado e armazena o texto em uma variável, 
independente do tamanho do texto informado.
( ) Verdadeiro ( ) Falso
4. Podemos manipular individualmente cada um dos caracteres de uma string.
( ) Verdadeiro ( ) Falso
5. A função strcmp verifi ca se uma string tem um número de caracteres maior do 
que outra.
( ) Verdadeiro ( ) Falso
6. A função strlen computa o tamanho de uma string.
( ) Verdadeiro ( ) Falso
7. toupper e tolower modifi cam um caracter para minúsculo e maiúsculo, 
respectivamente.
( ) Verdadeiro ( ) Falso
160

Continue navegando