Buscar

Linguagem C - Aula 5/5

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Linguagem de 
Programação
Aula 5 – Tratamento de caracteres e 
strings
Prof.: Teresinha Letícia da Silva
leticia@cafw.ufsm.br
UFSM
COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN
CURSO SUPERIOR DE TECNOLOGIA EM SISTEMAS PARA INTERNET
Lógica de Programação Prof. Teresinha Letícia da Silva
Tratamento de Strings em C
 Definição de string
 Strings são seqüências de caracteres diversos. São conhecidos por
“literais” na teoria de algoritmos estruturados, sendo representados
entre aspas. Alguns exemplos de strings:
 “Fulano da Silva”,
 “? Interrogação? “,
 “1,234”,
 “0”.
 Não existe um tipo String em C.
 Em C, strings são representadas através de vetores de caracteres,
terminados com o caractere de fim de string cujo valor na tabela
ASCII é zero (0 ou \0).
Lógica de Programação Prof. Teresinha Letícia da Silva
Declarando strings
 Uma string em C é declarada como um vetor de caracteres.
 Exemplos de declarações de string:
char frase[20]; // somente declara
char frase[20] = “Primeira string”; // declara e inicializa
char frase[] = “Primeira string”; //Inicialização sem a dimensão
char frase[6] = {‘T’, ‘e’, ‘s’, ‘t’, ‘e’, 0); /* inicializado como um vetor de 
caracteres comum, ‘forçando’ o caracter terminador */
 Devemos utilizar uma posição além do tamanho desejado para 
que possa ser colocado o marcador ’\0’ no final da string quando 
essa tiver o tamanho máximo.
Lógica de Programação Prof. Teresinha Letícia da Silva
Leitura de caracteres
 Para capturarmos o valor de um caractere simples fornecido pelo 
usuário via teclado, usamos a função scanf, com o especificador de 
formato %c.
char a;
...
scanf("%c", &a);
...
 Podemos também ler um caracter, através das funções getchar(), 
getch() ou getche(). 
 Exemplo:
a=getchar();
Lógica de Programação Prof. Teresinha Letícia da Silva
Lendo Strings
 O especificador %s pode ser utilizado para capturar cadeias de
caracteres na função scanf.
 No entanto, seu uso é muito limitado.
 O especificador %s na função scanf pula os eventuais caracteres
brancos e captura a sequência de caracteres não brancos.
 Exemplo:
char cidade[81];
...
scanf("%s", cidade);
...
Lógica de Programação Prof. Teresinha Letícia da Silva
Lendo Strings 
 Infelizmente, a leitura a partir do teclado utilizando o 
scanf lê somente até o primeiro espaço, ou seja, lê 
somente uma palavra, o que torna o seu uso desta 
forma um pouco restrito.
 Para contornar isso, podemos utilizar a função gets, que 
faz a leitura até encontrar o caracter de fim de linha 
(enter ).
gets(variavelstring);
Lógica de Programação Prof. Teresinha Letícia da Silva
Lendo Strings
 Tanto o comando scanf quanto o gets podem ler mais 
caracteres que os existentes na string, provocando 
erros.
 A soluçãoo neste caso é utilizar uma função que tenha o 
mesmo comportamento do gets, mas que permita limitar 
a leitura a um tamanho máximo. 
 Exemplo:
fgets (texto, 50, stdin);
Lógica de Programação Prof. Teresinha Letícia da Silva
Escrevendo uma string na tela
 Podemos escrever uma string na tela 
caracter a caracter, mas é mais simples 
escrever utilizando o comando printf, com o 
mesmo comando utilizado para lê-la (%s)
printf ("%s", texto);
Lógica de Programação Prof. Teresinha Letícia da Silva
Escrevendo uma string na tela
 De forma análoga ao gets e fgets, temos o 
puts e fputs, que escrevem a string na tela.
puts (texto);
fputs (texto, stdout);
Lógica de Programação Prof. Teresinha Letícia da Silva
Manipulando strings
 As strings são tão importantes que existe 
uma biblioteca de funções só com comandos 
para ela, a biblioteca string.h.
 #include <string.h>
Lógica de Programação Prof. Teresinha Letícia da Silva
Biblioteca string.h
 strlen
 strlen retorna o tamanho, em caracteres, de uma string dada. 
 Na verdade o que strlen() faz é procurar o terminador de string e 
calcular a distância dele ao início da string. 
 Por exemplo: 
char nome[20] = "Maria da Silva"; 
int s = strlen (nome); 
// s conterá o valor 14 
Lógica de Programação Prof. Teresinha Letícia da Silva
Biblioteca string.h
 strcpy
 strcpy copia o conteúdo de uma string para outra e coloca 
um terminador de string. 
 Não podemos usar: string = “texto"; 
 Sua sintaxe é strcpy (destino, origem).
 Exemplo:
char nome[20]; 
char nome2[20] = "Oswald de Andrade"; 
strcpy (nome, nome2); // agora nome conterá "Oswald de Andrade" 
Lógica de Programação Prof. Teresinha Letícia da Silva
Biblioteca string.h
 strncpy
 Tome cuidado com strcpy(), pois se a string a ser copiada for maior que
a string de destino, provavelmente você gravará dados em lugares
indesejados ― um problema conhecido como estouro de buffer.
 Para evitar esse problema, use a função strncpy, que recebe um
terceiro argumento que corresponde ao número máximo de caracteres a
serem copiados.
 Exemplo:
char msg[5];
char nome[20] = "Maria da Silva";
strncpy (msg, nome,5); // agora msg conterá "Maria"
Lógica de Programação Prof. Teresinha Letícia da Silva
Biblioteca string.h
 strcat
 strcat concatena duas strings, adicionando o conteúdo da segunda ao
final da primeira, além do terminador (\0).
 Note que a primeira string deve ter espaço suficiente para conter a
segunda, para que não ocorra um "estouro de buffer".
 Por exemplo:
char nome[50] = "Maria";
char sobrenome[] = " da Silva";
strcat (nome, sobrenome); // agora nome contém "Maria da Silva"
 Analogamente à função strncpy, existe também a função strncat, onde
o número máximo de caracteres a serem copiados é o terceiro
argumento.
Lógica de Programação Prof. Teresinha Letícia da Silva
Biblioteca string.h
 strcmp
 Se você tentar criar duas strings com o mesmo conteúdo e compará-
las como faria como números, verá que elas "não são iguais". 
 Isso ocorre porque, na verdade, o que está sendo comparado são os 
endereços de memória onde estão guardadas as strings. 
 Para comparar o conteúdo de duas strings, você deve usar a função 
strcmp.
 strcmp(str1, str2) — Compara duas strings e retorna um valor
 = 0 - se str1 e str2 forem iguais
 < 0 - se str1 for menor que str2
 > 0 - se str1 for maior que str2
Lógica de Programação Prof. Teresinha Letícia da Silva
Biblioteca string.h
 strcmp
 É importante notar que a comparação feita por strcmp distingue
maiúsculas de minúsculas.
 Isto é, as strings "ABC" e "abc" não são iguais para essa função.
 As variantes mais usadas de strcmp são:
 strncmp - compara apenas os n primeiros caracteres das duas strings,
sendo n um terceiro argumento.
 stricmp - compara duas strings sem distinção entre maiúsculas e
minúsculas. A sintaxe é igual à de strcmp. Essa função não faz parte
da biblioteca padrão, mas é comumente encontrada como extensão
particular de várias delas.
Lógica de Programação Prof. Teresinha Letícia da Silva
Biblioteca string.h
 strlwr
 Converte letras maiúsculas em minúsculas numa string. 
 Exemplo:
strlwr(s);
 strupr
 Converte letras minúsculas numa string para maiúsculas.
 Exemplo:
strupr(s);
 strrev
 Reverte uma string. strrev muda todos os caracteres numa string
para a ordem reversa, com exceção do caracter nulo de terminação
 Exemplo:
strrev(s);
Lógica de Programação Prof. Teresinha Letícia da Silva
Biblioteca string.h
 strstr
 A função strstr retorna um ponteiro para a primeira 
ocorrência da string apontada por str2 na str1. Ela devolve 
um ponteiro nulo se não encontrar nenhuma ocorrência.
 Exemplo:
 strstr(str1,str2);
 toupper
 A função toupper() devolve o equivalente maiúsculo do 
caracter ch se ele for uma letra minúscula. Todos os outros 
caracteres são deixados inalterados. 
Lógica de ProgramaçãoProf. Teresinha Letícia da Silva
Exercícios

Outros materiais