Algoritmos e
Programação em C/C++
Prof. Ms. Márcio Miguel Gomes
String - Definição
strA = ? ? ? ? ? ? ? ? ? ?
• String é um array de caracteres terminado com nulo, ou seja, o
último elemento é zero ou '\0';
• O tamanho do array deve ser uma unidade maior que o
comprimento da maior palavra ou frase que será armazenada nele;
• A sintaxe básica para declaração de uma string é:
char nome[tam] ou char nome[];
Exemplos
char strA[10];
char strB[8];
String - Acesso Elementos
strA = M e u t e x t o \0
0 1 2 3 4 5 6 7 8 9
• Cada elemento de uma string é acessado por meio de um
índice, que tanto pode ser um valor constante (e fixo)
quanto variável (uma variável inteira)
Exemplos:
a = strA[2];
b = strA[i];
strA[4] = 'T';
String - Inicialização
#include <stdio.h>
void main()
{
char strA[12] = "Palavra A";
char strB[] = "Texto B";
char strC[] = {'M', 'e', 'u', ' ', 'T', 'e', 'x', 't',
'o', ' ', 'C', '\0'};
}
strA = P a l a v r a A \0 ? ?
strB = T e x t o B \0
strC = M e u T e x t o C \0
0 1 2 3 4 5 6 7 8 9 10 11
String - Saída de Dados
• Comando “printf” passando como parâmetros o formatador “%s” e
a variável string
printf("%s", strA);
• Comando puts() passando como parâmetro a variável string
puts(strA);
String - Saída de Dados
#include <stdio.h>
void main()
{
char strA[12] = "Palavra A";
char strB[] = "Texto B";
char strC[] = {'M', 'e', 'u', ' ', 'T', 'e', 'x', 't',
'o', ' ', 'C', '\0'};
printf("%02d - %s\n%02d - %s\n%02d - %s\n",
sizeof(strA), strA, sizeof(strB), strB,
sizeof(strC), strC);
puts(strA);
puts(strB);
puts(strC);
}
String - Entrada de Dados
• Comando “scanf” passando como parâmetros o formatador “%s” e
a variável string sem o “&”. Aceita apenas entrada de texto sem
espaçamento
scanf("%s", strA);
• Comando gets() passando como parâmetro a variável string sem o
“&”. Aceita entrada de texto com e sem espaçamento
gets(strA);
String - Entrada de Dados
#include <stdio.h>
void main()
{
char nome[60];
printf(":: Entrada de dados string ::\n\n");
printf("Informe seu nome completo: ");
scanf("%s", nome);
printf("\nNome informado: %s\n", nome);
}
String - Entrada de Dados
#include <stdio.h>
void main()
{
char nome[60];
printf(":: Entrada de dados string ::\n\n");
printf("Informe seu nome completo: ");
gets(nome);
printf("\nNome informado: %s\n", nome);
}
String como parâmetro
int contaVogais (char s[]) {
int numVogais = 0, i, j;
char vogais[] = "aeiouAEIOU";
for (i = 0; s[i] != '\0'; i++) {
for (j = 0; vogais[j]; j++) {
if (vogais[j] == s[i]) {
numVogais++;
break;
}
}
}
return numVogais;
}
Biblioteca string.h
• unsigned int strlen (char x[ ]);
A função devolve o comprimento da string “x”. Em outras palavras,
devolve o número de caracteres de “x” sem contar o '\0' final
• int strcmp (char x[ ], char y[ ]);
Compara lexicograficamente as strings “x” e “y”. Devolve um
número estritamente negativo se “x” vem antes de “y”, devolve 0
se “x” é igual a “y” e devolve um número estritamente positivo se
“x” vem depois de “y”
Biblioteca string.h
• char *strcpy (char destino[ ], char origem[ ]);
Copia a string “origem” (inclusive o '\0' final) no espaço alocado
para a string “destino”. Cabe ao usuário garantir que o espaço
alocado a “destino” tenha pelo menos “strlen(origem) + 1” bytes. A
função devolve “destino”
• char *strcat (char destino[ ], char origem[ ]);
Concatena as strings “origem” e “destino”, isto é, acrescenta
“origem” ao final de “destino”. Devolve o endereço da string
resultante “destino”. Cabe ao usuário garantir que o espaço
alocado a “destino” seja suficientemente grande para comportar
“strlen(origem)” + “strlen(destino)” + 1 bytes.
String - Exercícios
1. Escreva uma função que receba uma palavra ou frase como parâmetro e
mostre na tela sua capacidade de armazenamento total e a quantidade de
caracteres da frase ou palavra
2. Escreva uma função que receba duas palavras e mostre na tela se ambas
são iguais ou se a primeira é anterior ou posterior a segunda conforme a
ordem alfabética
3. Escreva um método que receba 3 textos (sujeito, verbo e predicado), monte
uma nova frase com esses 3 elementos (separados por espaço) e em
seguida imprima a frase. Utilize a função strcat. Experimente também a
função sprintf.
4. Escreva uma função que receba um texto como parâmetro e imprima o
mesmo texto em letras maiúsculas
String - Exercícios
5. Escreva uma função que informe se uma string é ou não um palíndromo, ou
seja, se o inverso da string é igual a ela. Escreva um programa para testar a
função
6. Escreva uma função que receba uma string e imprima uma tabela com o
número de ocorrências de cada caractere da string. Escreva um programa
para testar a função.
7. Escreva uma função que receba uma string e substitua cada segmento de
dois ou mais espaços por um só espaço
8. Escreva uma função que receba como parâmetro as strings “seg” e “txt” e
verifique se “seg” é um segmento de “txt”. Escreva um programa que use
essa função
String - Exercícios
9. Crie uma função que receba como parâmetro uma string digitada pelo
usuário. Avalie o conteúdo dessa string e indique se ela representa um
número inteiro, um número fracionário ou um texto qualquer.
10. Crie uma função chamada strToInt() que recebe uma string qualquer como
parâmetro e retorna o valor inteiro correspondente. Caso a string não
represente um número inteiro válido, deve retornar zero.
11. Crie uma função chamada strToFloat() que recebe uma string qualquer
como parâmetro e retorna o valor fracionário correspondente. Caso a string
não represente um número fracionário válido, deve retornar zero.
12. Crie uma função que recebe como parâmetro um número inteiro entre 0 e
99 e o escreva na tela por extenso.