SlideShare uma empresa Scribd logo
1 de 6
BIBLIOTECA - STRIGS
http://pt.slideshare.net/elainececiliagatto/pc-strings#
 STRINGS Profª Ms. Engª Elaine Cecília Gatto Curso de Bacharelado em Engenharia de
Computação Universidade do Sagrado CoraçãO – USC Bauru/SP
 STRINGS • São sequências, conjuntos ou cadeira de caracteres diversos, sendo
representados por aspas; • Em C não existe um tipo STRING explícito; • Não é um tipo
primitivo da linguagem; • Não existe uma palavra reservada que declare uma variável do
tipo STRING (como acontece em pascal, java, etc); • Em C utiliza-se um vetor ou matriz do
tipo CHAR para armazenar uma STRING; • Mas qual o tamanho da STRING? Quando ela
termina? • Utilizar um caracter terminador: 0 (null = zero)  forma que as funções
reconhecem o fim da string;
 STRINGS • Caracteres são blocos de montagem fundamentais dos programas-fonte •
Cada programa é composto por uma sequencia de caracteres que, ao serem agrupados
de modo significativo, são interpretados pelo computador como uma série de instruções
que serão usadas na realização de tarefa • CONSTANTE DE CARACTER: é um valor INT
representado por um caracter entre aspas simples • CONJUNTO DE CARACTERES DA
MÁQUINA: exemplo o código ASCII
 STRINGS • STRING: consistem em uma série de caracteres tratados como uma únic
entidade • CARACTERES ESPECIAIS: acentos, pontuação, etc • STRINGS LITERAIS ou
CONSTANTES STRINGS: são escritas entre aspas duplas, exemplo: • “João da Silva” •
“14-2107-7000”
 STRINGS • É um array de caracteres que termina no caractere ‘0’ • O valor de uma
STRING é o endereço de seu primeiro caractere • STRINGs são acessadas por meio de
um ponteiro para o primeiro caractere da STRING • char cor[] = “azul”; • const char *corPtr
= “azul”; • char cor[] = {‘a’, ‘z’, ‘u’, ‘l’, ‘0’}
 Strings Constantes • Sempre que o compilador encontra qualquer coisa entre aspas
duplas, ele reconhece que se trata de uma string constante. printf( “ %s ”, “ Saudações ”);
Posição da memória string 1092 S 1093 A 1094 U 1095 D 1096 A 1096 C 1097 O 1098 E
1099 S 1100 0
 SCANF( ) • É uma função da biblioteca padrão de entrada/saída • A função SCANF() lerá
caracteres até que se encontre: • Espaço • Tabulação • Nova linha • Indicador de fim de
arquivo • Use %s de modo que scanf leia a quantidade de caracteres exatos que você
deseja. Exemplo: char word[20]; scanf( “ %19s ”, word);
 SCANF( ) #include <stdio.h> #include <stdlib.h> int main(){ char nome[100]; printf("Digite o
seu nome: "); scanf("%s", nome); printf("Saudacoes, %s", nome); printf("n ");
system("PAUSE"); return 0; } • Observe a saída do programa! Consegue notar o que há de
diferente entre a entrada de dados e a saída?
 SCANF( ) #include <stdio.h> #include <stdlib.h> int main(){ char nome[100]; printf("Digite o
seu nome: "); scanf("%s", nome); printf("Saudacoes, %s", nome); printf("n ");
system("PAUSE"); return 0; } • Esta instrução lê cada caractere digitado e os armazena a
partir do endereço nome. • O processo termina quando um caractere branco é encontrado.
• Nesse ponto é incluído automaticamente o caractere 0 na próxima posição livre. • Não é
permitido ultrapassar o limite estipulado na criação do vetor/matriz. • O espaço para 0 deve
ser previsto. • A função scanf() entende um espaço em branco como o término da entrada.
• Por isso, na saída, apenas o primeiro nome digitado é apresentado.
 SCANF( ) #include <stdio.h> #include <stdlib.h> int main(){ char nome[100]; printf("Digite o
seu nome: "); scanf("%s", nome); printf("Saudacoes, %s", nome); printf("n ");
system("PAUSE"); return 0; } • Mas se digitarmos o nome inteiro sem espaços, observe a
saída! • Observe esta instrução novamente. Porque está sendo usado nome e não
&nome? • Neste caso, nome é equivalente a &nome[0] • O nome de uma matriz é o seu
endereço inicial • Scanf() é muito utilizada para ler uma mistura de tipos de dados numa
mesma instrução.
 SSCANF( ) INT SSCANF ( CHAR *S, CONST CHAR * FORMAT, ...); • • • • Equivalente a
scanf A entrada é lida a partir do array S em vez do teclado Retorna o número de
caracteres escritos em S Retorna EOF (END-OF-FILE) se ocorrer um erro • É uma função
da biblioteca padrão de entrada/saída • EXEMPLO, LIVRO DEITEL, 8.16
 GETS( ) • char *gets (char *s); • Pede ao usuario que entre uma string, que sera
armazenada na string s. • O ponteiro que a funcao retorna é o proprio s. • gets nao é uma
funcao segura. • Por que? • Porque com gets pode ocorrer um estouro da quantidade de
posicoes que foi especificada na string. • É uma função da biblioteca padrão de
entrada/saída
 GETS( ) #include <stdio.h> #include <stdlib.h> int main(){ char nome[100]; printf("Digite o
seu nome: "); gets(nome); printf("Saudacoes, %s", nome); printf("n "); system("PAUSE");
return 0; } • Usada para leitura de textos ; • Propósito: ler unicamente uma cadeia de
caracteres do teclado enquano a tecla ENTER não for pressionada; • Todos os caracteres
digitados são armazenados, inclusive espaços e tabulações; • O caractere 0 é incluído no
final;
 GETS( ) #include <stdio.h> #include <stdlib.h> int main(){ char nome[100]; printf("Digite o
seu nome: "); gets(nome); printf("Saudacoes, %s", nome); printf("n "); system("PAUSE");
return 0; } • Problemas com esta função: pode armazenar caracteres além da capacidade
definida;
 GETS( ) #include <stdio.h> #include <stdlib.h> int main(){ char nome[10]; printf("Exemplo
de estouro de string. n"); printf("Digite o seu nome: "); gets(nome); printf("Saudacoes, %s",
nome); printf("n "); system("PAUSE"); return 0; } • Neste exemplo, é declarado um vetor de
tamanho 10, mas o nome digitado contém 20 caracteres. Observe que o vetor armazena
10 caracters a mais do que foi especificado. • Para resolver este problema, deve-se usar
FGETS()
 GETCHAR( ) • INT GETCHAR (VOID) • É uma função da biblioteca padrão de
entrada/saída • Insere o caractere seguinte da entrada-padrão e o retorna como um inteiro
• A função getchar() lê um caracter e retorna um inteiro que é: • o código do caracter, ou •
o valor -1 que corresponde a fim de ficheiro
 GETCHAR( ) /* Exemplo da utilização de getchar */ #include <stdio.h> int main() { char
caracter; printf("n"); fflush(stdout); printf("Utilizando getchar()n"); fflush(stdout); printf("-------
-------------n"); fflush(stdout); printf("n"); fflush(stdout); printf("Entre com um caracter :");
fflush(stdout); caracter = getchar(); printf("n Você digitou o caracter %c n n", caracter);
fflush(stdout); return(0); }
 GETCHAR( ) #include<stdio.h> main() { int c; int i=0; while((c = getchar()) != -1) if (c == 'a')
i++; printf("Foram lidos %d a's",i); }
 FGETS( ) • CHAR *FGETS ( CHAR *S, INT N, FILE *STREAM) • Insere caracteres de fluxo
especificado para o array S até que: • um caractere de newline seja lido, ou • fim de
arquivo seja encontrado, ou • até que n-1 bytes sejam lidos • Um caractere nulo de
finalização é anexado ao array • Retorna a string que foi lida em S • É uma função da
biblioteca padrão de entrada/saída
 FGETS( ) #include <stdio.h> #include <stdlib.h> int main(){ char nome[15]; printf("Digite o
seu nome: "); fgets(nome, 15, stdin); printf("Saudacoes, %s", nome); printf("n ");
system("PAUSE"); return 0; } • O código ao lado utiliza fgets. O vetor declarado tem 15
posições e somente essas 15 posições são preenchidas. • Na saída, observa-se que o
nome digitado é maior que as 15 posições, e portanto, o restante do nome é desprezado. •
STDIN: fluxo padrão de entrada-
 PUTS( ) • INT PUTS ( CONST CHAR *S ) • Imprime a string S seguida por um caractere
de newline • Retorna um inteiro diferente de zero se for bem sucedida • Retorna um EOF
se ocorrer um erro • É uma função da biblioteca padrão de entrada/saída
 PUTS( ) #include <stdio.h> #include <stdlib.h> int main(){ char nome[80]; printf("Digite o
seu nome: "); gets(nome); puts(""); puts("Saudacoes, "); puts(nome); puts("");
puts("Imprimindo a partir da quarta posicao: "); puts(&nome[4]); puts(""); puts("a funcao
puts() pula linha automaticamente!"); puts(""); system("PAUSE"); return 0; } • É o
complemento da função gets(); • Propósito: imprimir uma única string por vez; • O
endereço da string deve ser enviado para puts como argumento;
 PUTCHAR( ) • INT PUTCHAR ( INT C ); • Imprime o caracter armazenado em C e o
retorna como um inteiro • É uma função da biblioteca padrão de entrada/saída
 SPRINTF( ) • INT SPRINTF ( CHAR *S, CONST CHAR *FORMAT, ... ); • • • • Equivalente
a printf A saída é armazenada no array S em vez de impressa na tela Retorna o número
de caracteres escritos em S Retorna EOF se ocorrer um erro • É uma função da biblioteca
padrão de entrada/saída • EXEMPLO, LIVRO DEITEL, 8.15
 SPRINTF( ) #include <stdio.h> int main() { int i; char string1[20]; printf( " Entre um valor
inteiro: "); fflush(stdout); scanf("%d", &i); sprintf(string1, "Valor de i = %d", i); puts(string1);
return 0; }
 FGETS( ) E PUTCHAR( ) #include <stdio.h> void reverse(const char * const sPtr); int
main(){ char sentenca[80]; printf(" Digite uma linha de texto: n "); fflush(stdout);
fgets(sentenca, 80, stdin); printf(" n A linha impressa na ordem inversa é: n ");
fflush(stdout); reverse(sentenca); system("PAUSE"); return 0; } void reverse(const char *
const sPtr){ if(sPtr[0] == '0'){ return; } else{ reverse(&sPtr[1]); //recursão putchar(sPtr[0]);
//exibe o caractere } }
 GETCHAR( ) e PUTS( ) • EXEMPLO, LIVRO DEITEL, 8.14
 Inicializando strings char nome[] = {‘E’, ‘l’, ‘a’, ‘i’, ‘n’, ‘e’, ‘0’}; char nome[] = “Elaine”;
EXEMPLO: #include <stdio.h> #include <stdlib.h> int main(){ char
saudacao[]="Saudacoes, "; char nome[80]; printf(" Digite o seu nome: "); gets(nome);
printf("%s%s n", saudacao, nome); system("PAUSE"); return 0; }
 STRCPY( ) • CHAR *STRCPY ( CHAR *S1, CONST CHAR *S2 ); • Copia a string s2 no
array s1 • O valor de s1 é retornado • É uma função de manipulação de strings
 STRCPY( ) #include <stdio.h> #include <stdlib.h> #include <string.h> int main(){ char
nome_original[30] ; char nome_copia[30]; printf(" Digite um nome: "); gets(nome_original);
strcpy(nome_copia, nome_original); printf(" Nome original: "); puts(nome_original); printf("
Nome copia: "); puts(nome_copia); system("PAUSE"); return 0; } • Copia ou atribui o
conteúdo da string de origem para a string de destino. Ambas devem ter, no mínimo, o
mesmo tamanho; • Sintaxe: strcpy(string_destino, string_origem);
 STRCAT( ) • CHAR *STRCAT ( CHAR *S1, CONST CHAR *S2 ); • Acrescenta a string s2
ao array s1 • O primeiro caractere de s2 sobrescreve o caractere nulo de finalização de s1
• O valor de s1 é retornado • É uma função de manipulação de strings
 STRCAT( ) #include <stdio.h> #include <stdlib.h> #include <string.h> int main(){ char
cadeia1[100]; char cadeia2[10]; printf(" Digite o seu primeiro nome: "); gets(cadeia1);
printf(" Digite o seu segundo nome: "); gets(cadeia2); strcat(cadeia1, cadeia2); printf("%s",
cadeia1); puts(""); system("PAUSE"); return 0; } • Concatena o conteúdo da string de
origem ao final do conteúdo da string de destino. • Essa função não verifica se a primeira
cadeia tem espaço suficiente para que a segunda cadeia seja adicionada ao seu final. •
Sintaxe: strcat(string_destino, string origem);
 STRNCPY( ) • Char *strncpy ( char *s1, const char *s2, size_t n ) • Copia no maximo n
caracteres da string2 no array s1 • O valor de s1 é retornado • É uma função de
comparação de strings
 STRCPY e STRNCPY //exemplo STRCPY E STRNCPY #include <stdio.h> #include
<string.h> int main(void){ char x[] = "Parabéns a você"; char y[25]; char z[15]; printf(" %s
%s n %s %s n", "A string no array x é: ", x, "A string no arryz y é: ", y, strcpy(y,x));
fflush(stdout); strncpy(z, x, 14); z[14] = '0'; printf(" A string no array z é: %s", z);
fflush(stdout); return 0; }
 STRNCAT( ) • Char *STRNCAT ( char *s1, const char *s2, size_t n ) • Acrescenta no
máximo n caracteres da string s2 ao array s1. • O primeiro caractere de s2 sobrescreve o
caractere nulo de finalização de s1 • O valor de s1 é retornado • É uma função de
comparação de strings
 STRCMP( ) • INT STRCMP ( CONST CHAR *S1, CONST CHAR *S2 ); • Compara a string
s1 com a string s2 • A função retorna 0, menor do que 0 ou maior do que 0 se s1 for igual,
menor ou maior do que s2, respectivamente • É uma função de comparação de strings
 Função STRCMP( ) • Compara o conteúdo da string 1 com o conteúdo da string 2; •
Retorna um número inteiro; • Se forem iguais, a função retorna zero; • Se o número
retornado for menor que zero, então a string1 é menor que a string 2; • Se o número
retornado for maior que zero, então a string1 é maior que a string2;
 STRNCMP( ) • INT STRNCMP ( CONST CHAR *S1, CONST CHAR *S2, SIZE_T N ); •
Compara até n caracteres da string s1 com a string s2 • A função retorna 0, o menor do
que 0 ou maior do que 0 se s1 for igual, menor ou maior do que s2, respectivamente • É
uma função de comparação de strings
 STRCMP( ) #include <stdio.h> #include <stdlib.h> #include <string.h> int main(){ char
string1[20], string2[20]; int resultado; printf(" Digite uma palavra: "); gets(string1); printf("
Digite uma palavra: "); gets(string2); resultado = strcmp(string1, string2); if(resultado ==0 ){
puts("As strings sao iguais."); } else{ puts("As strings sao diferentes."); } system("PAUSE");
return 0; }
 Função STRCMP( )
 STRLEN( ) • SIZE_T STRLEN ( CONST CHAR *S ); • Determina o comprimento da string
S • O número de caracteres anteriores ao caractere nulo de finalização é retornado
 Função STRLEN( ) #include <stdio.h> #include <stdlib.h> #include <string.h> int main(){
char string1[20], string2[20]; int tamanho1, tamanho2; printf(" Digite uma palavra: ");
gets(string1); printf(" Digite uma palavra: "); gets(string2); tamanho1 = strlen(string1);
tamanho2 = strlen(string2); printf("O tamanho da string1 e: %d", tamanho1); puts("");
printf("O tamanho da string2 e: %d", tamanho2); puts(""); system("PAUSE"); return 0; } •
Recebe • • como argumento o endereço de uma string e retorna o seu tamanho; O
comprimento do vetor/matriz da string deve ser um a mais que o inteiro retornado por
strlen(); O terminador 0 não é contabilizado;
 Função STRUPR( ) #include <stdio.h> #include <stdlib.h> #include <string.h> int main(){
char string[20]; printf(" n Escreva uma palavra: "); gets(string); printf(" n String original: %s",
string); strupr(string); printf(" n String convertida: %s", string); printf("nn"); system("pause");
return 0; } • Converte o conteúdo da string em letras maiusculas
 Função STRLWR( ) #include <stdio.h> #include <stdlib.h> #include <string.h> int main(){
char string[20]; printf(" n Escreva uma palavra com todas as letras em maiusculo: ");
gets(string); printf(" n String original: %s", string); strupr(string); printf(" n String convertida:
%s", string); printf("nn"); system("pause"); return 0; } • Converte o conteúdo da string em
letras minusculas
 Conversão de Strings • Biblioteca de utilitários gerais: stdlib.h • Convertem strings de
digitos em valores inteiros e de ponto flutuante Double atof ( const char *nPtr ); Converte a
string NPTR em double Int atoi ( const char *nPtr ); Converte a string NPTR em int Long
atol (const char *nPtr ); Converte a string NPTR em long int Double strtod ( const char
*nPtr, char **endPtr ); Converte a string NPTR em double (**  ponteiro de uma string)
Long strtol ( const char *nPtr, char **endPtr, int base ); Converte a string NPTR em long
Unsigned long strtoul ( const char *nPtr, char **endPtr, int base ); Convertea a string NPTR
em unsigned long
 Conversão de Strings • EXEMPLOS, LIVRO DO DEITEL
 STRCHR( ) • CHAR *STRCHR ( CONST CHAR *S, INT C ); • Localiza a primeira
ocorrência do caractere C na string S • Se C for encontrado, um ponteiro para C em S é
retornado • Caso contrário, um ponteiro NULL é retornado • É uma função de pesquisa •
EXEMPLO 8.23, LIVRO DEITEL
 STRCSPN( ) SIZE_T STRCSPN ( CONST CHAR *S1, CONST CHAR *S2 ); • Determina e
retorna o tamanho do segmento incial da string s1 que consiste apenas em caracteres
contidos na string s2 • Exemplo 8.24, livro do deitel • É uma função de pesquisa
 STRSPN( ) • SIZE_T STRSPN ( CONST CHAR *S1, CONST CHAR *S2 ); • Determina e
retorna o tamanho do segmento inicial da string s1 que consiste em caracteres não
contidos na string s2 • Exemplo 8.27, livro deitel • É uma função de pesquisa
 STRPBRK( ) CHAR *STRPBRK ( CONST CHAR *S1, CONST CHAR *S2 ); • Localiza a
primeira ocorrência na string s1 de qualquer caractere na string s2 • Se um caractere da
string s2 for encontrado, um ponteiro para o caractere na string s1 é retornado • Caso
contário, um ponteiro NULL é retornado • É uma função de pesquisa • Exemplo 8.25, livro
deitel
 STRRCHR( ) • Char *strrchr ( const char *s, int c ); • Localiza a última ocorrência de C na
string S • Se C for encontrado, um ponteiro para C na string S é retornado • Caso
contrário, um ponteiro NULL é retornado • É uma função de pesquisa • Exemplo 8.26, livro
do deitel
 STRSTR( ) • CHAR *STRSTR ( CONST CHAR *S1, CONST CHAR *S2 ); • Localiza a
primeira ocorrência na string S1 da string S2 • Se a string for encontrada, um ponteiro para
a string em S1 é retornado • Caso contrário, um ponteiro NULL é retornado • É uma função
de pesquisa • Exemplo 8.28, livro do deitel
 STRTOK( ) • CHAR *STRTOK ( CHAR *S1, CONST CHAR *S2); • Uma sequencia de
chamadas para STRTOK separa a string s1 em tokens separados por caracteres contidos
na string s2 • TOKENS: partes lógicas. Exemplo: palavras em uma linha de texto • A
primeira chamada contém S1 como primeiro argumento, e para que as chamadas
seguintes continuem a separar tokens na mesma string, elas deverão conter NULL como
primeiro argumento • Um ponteiro para o token em vigor é retornado por cada chamada. •
Se não houve mais tokens quando a função for chamada, NULL será retornado • É uma
função de pesquisa • exemplo 8.29, livro deitel
 Exercícios 1. Desenvolver um programa que obtenha as seguintes informações para os “n”
colegas da sua turma de Programação de Computadores: variavel qtde caracteres nome
15 sobrenome 30 endereço 80 telefone 10 idade 3 • Realize as seguintes tarefas: • Copie
o nome do seu colega para uma variável denominada nome2; • Concatene o sobrenome à
variável nome2;
 Exercícios • Obtenha o tamanho da variável nome2; • Imprima todas as informações de
cada um dos seus colegas na tela; 2. Faça um programa em C que leia 10 strings, imprima
o tamanho de cada uma delas e troque as letras para maiusculas. Dica: use o FOR. 3.
Troque as letras do exercício anterior, por minusculas. 4. Escreva um programa em C que
receba o nome, a idade e o sexo de 10 pessoas e armazene, em um vetor/matriz, as
pessoas que forem do sexo masculino e maiores de 18 anos.
 Exercícios 5. Escreva um programa que faça a seguinte pergunta ao usuário: “Quem é o
criador da Linguagem C?”. O usuário deve escrever a resposta e o programa deve
verificar: • Se o usuário responder corretamente, uma mensagem de “parabéns, voce
acertou!”, deve ser emitida; • Se o usuário responder incorretamente, uma mensagem de
“que pena, voce errou!”, deve ser emitida.

Mais conteúdo relacionado

Mais procurados (20)

Python 02
Python 02Python 02
Python 02
 
Aula5 introducao c
Aula5 introducao cAula5 introducao c
Aula5 introducao c
 
Aula5 introducao c
Aula5 introducao cAula5 introducao c
Aula5 introducao c
 
Cheat sheet Mips 32 bits
Cheat sheet Mips 32 bitsCheat sheet Mips 32 bits
Cheat sheet Mips 32 bits
 
Minicurso Shell Script
Minicurso Shell ScriptMinicurso Shell Script
Minicurso Shell Script
 
Shell Script v0
Shell Script v0Shell Script v0
Shell Script v0
 
Standard ML / CPN ML
Standard ML / CPN MLStandard ML / CPN ML
Standard ML / CPN ML
 
Programando em python funcoes
Programando em python   funcoesProgramando em python   funcoes
Programando em python funcoes
 
Introducao ao Shell Script
Introducao ao Shell ScriptIntroducao ao Shell Script
Introducao ao Shell Script
 
Python 03
Python 03Python 03
Python 03
 
Tutorial R
Tutorial RTutorial R
Tutorial R
 
Lp m2(parte4)
Lp m2(parte4)Lp m2(parte4)
Lp m2(parte4)
 
Pascal apostila
Pascal apostilaPascal apostila
Pascal apostila
 
Cool 3 assembly para linux
Cool 3   assembly para linuxCool 3   assembly para linux
Cool 3 assembly para linux
 
Minicurso php
Minicurso phpMinicurso php
Minicurso php
 
PHP - Arrays
PHP - ArraysPHP - Arrays
PHP - Arrays
 
Regex
RegexRegex
Regex
 
Python 01
Python 01Python 01
Python 01
 
Fugindo para as colinas com Python - Julio Biason - Tchelinux Bento Gonçalves...
Fugindo para as colinas com Python - Julio Biason - Tchelinux Bento Gonçalves...Fugindo para as colinas com Python - Julio Biason - Tchelinux Bento Gonçalves...
Fugindo para as colinas com Python - Julio Biason - Tchelinux Bento Gonçalves...
 
iOS 8 com swift
iOS 8 com swiftiOS 8 com swift
iOS 8 com swift
 

Destaque

Destaque (14)

Cb embrapa workshop insumos
Cb embrapa workshop insumosCb embrapa workshop insumos
Cb embrapa workshop insumos
 
Grupo 1
Grupo 1Grupo 1
Grupo 1
 
Folia pra que
Folia pra queFolia pra que
Folia pra que
 
Propuestas Curso 2009 2010
Propuestas Curso 2009   2010Propuestas Curso 2009   2010
Propuestas Curso 2009 2010
 
Scott Monty
Scott MontyScott Monty
Scott Monty
 
Maths project brief sept project - statistics
Maths project brief sept project - statisticsMaths project brief sept project - statistics
Maths project brief sept project - statistics
 
Ficha tcnica
Ficha tcnicaFicha tcnica
Ficha tcnica
 
FOLIA!
FOLIA!FOLIA!
FOLIA!
 
Beneficios da Folia
Beneficios da FoliaBeneficios da Folia
Beneficios da Folia
 
Meu primeiro beijo.enviar
Meu primeiro beijo.enviarMeu primeiro beijo.enviar
Meu primeiro beijo.enviar
 
Taller no 3
Taller no 3Taller no 3
Taller no 3
 
Aula 04a rev_27_08_12_adm_prod_tgpi
Aula 04a rev_27_08_12_adm_prod_tgpiAula 04a rev_27_08_12_adm_prod_tgpi
Aula 04a rev_27_08_12_adm_prod_tgpi
 
Business Connectivity Solution
Business Connectivity SolutionBusiness Connectivity Solution
Business Connectivity Solution
 
psicología humanista
psicología humanistapsicología humanista
psicología humanista
 

Semelhante a Strings em C - Funções básicas

unidade04-c3-handout.pdf
unidade04-c3-handout.pdfunidade04-c3-handout.pdf
unidade04-c3-handout.pdfAlexSouza974126
 
Linguagem c wellington telles - aula 03
Linguagem c   wellington telles - aula 03Linguagem c   wellington telles - aula 03
Linguagem c wellington telles - aula 03profwtelles
 
Aula 14 - Entrada e Saida em linguagem C.pdf
Aula 14 - Entrada e Saida em linguagem C.pdfAula 14 - Entrada e Saida em linguagem C.pdf
Aula 14 - Entrada e Saida em linguagem C.pdfvictorlopes714651
 
Algoritmo e lógica de programação - aula 2
Algoritmo e lógica de programação - aula 2Algoritmo e lógica de programação - aula 2
Algoritmo e lógica de programação - aula 2engenhariadecomputacao
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem Capolllorj
 
Linguagem C (Parte 2)
Linguagem C (Parte 2)Linguagem C (Parte 2)
Linguagem C (Parte 2)Daniel Barão
 
Capítulo 05 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 05 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Capítulo 05 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 05 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Os Fantasmas !
 
Curso Completo de Linguagem de Programação C
Curso Completo de Linguagem de Programação CCurso Completo de Linguagem de Programação C
Curso Completo de Linguagem de Programação CJoberthSilva
 
[Curso Java Basico] Aula 63: printf
[Curso Java Basico] Aula 63: printf[Curso Java Basico] Aula 63: printf
[Curso Java Basico] Aula 63: printfLoiane Groner
 
Linguagem C (Parte 5)
Linguagem C (Parte 5)Linguagem C (Parte 5)
Linguagem C (Parte 5)Daniel Barão
 
Comandos de Controle de Programa em C
Comandos de Controle de Programa em CComandos de Controle de Programa em C
Comandos de Controle de Programa em CElaine Cecília Gatto
 
Aula 10 de algoritmos com raciocínio lógico e desenvolvimento de código
Aula 10 de algoritmos com raciocínio lógico e desenvolvimento de códigoAula 10 de algoritmos com raciocínio lógico e desenvolvimento de código
Aula 10 de algoritmos com raciocínio lógico e desenvolvimento de códigossusere36c31
 
Aula de Algoritmos II - Turma 222
Aula de Algoritmos II - Turma 222Aula de Algoritmos II - Turma 222
Aula de Algoritmos II - Turma 222Bianca Dantas
 

Semelhante a Strings em C - Funções básicas (20)

Linguagem C - Strings
Linguagem C - StringsLinguagem C - Strings
Linguagem C - Strings
 
unidade04-c3-handout.pdf
unidade04-c3-handout.pdfunidade04-c3-handout.pdf
unidade04-c3-handout.pdf
 
Linguagem c wellington telles - aula 03
Linguagem c   wellington telles - aula 03Linguagem c   wellington telles - aula 03
Linguagem c wellington telles - aula 03
 
Aula 14 - Entrada e Saida em linguagem C.pdf
Aula 14 - Entrada e Saida em linguagem C.pdfAula 14 - Entrada e Saida em linguagem C.pdf
Aula 14 - Entrada e Saida em linguagem C.pdf
 
PHP - Strings
PHP - StringsPHP - Strings
PHP - Strings
 
Linguagem C 02 String
Linguagem C 02 StringLinguagem C 02 String
Linguagem C 02 String
 
Algoritmo e lógica de programação - aula 2
Algoritmo e lógica de programação - aula 2Algoritmo e lógica de programação - aula 2
Algoritmo e lógica de programação - aula 2
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
 
Linguagem C (Parte 2)
Linguagem C (Parte 2)Linguagem C (Parte 2)
Linguagem C (Parte 2)
 
Capítulo 05 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 05 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Capítulo 05 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 05 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
 
Curso Completo de Linguagem de Programação C
Curso Completo de Linguagem de Programação CCurso Completo de Linguagem de Programação C
Curso Completo de Linguagem de Programação C
 
Linguagem C 09 Ponteiros
Linguagem C 09 PonteirosLinguagem C 09 Ponteiros
Linguagem C 09 Ponteiros
 
Strings em php
Strings em phpStrings em php
Strings em php
 
Canivete shell
Canivete shellCanivete shell
Canivete shell
 
[Curso Java Basico] Aula 63: printf
[Curso Java Basico] Aula 63: printf[Curso Java Basico] Aula 63: printf
[Curso Java Basico] Aula 63: printf
 
Java4
Java4Java4
Java4
 
Linguagem C (Parte 5)
Linguagem C (Parte 5)Linguagem C (Parte 5)
Linguagem C (Parte 5)
 
Comandos de Controle de Programa em C
Comandos de Controle de Programa em CComandos de Controle de Programa em C
Comandos de Controle de Programa em C
 
Aula 10 de algoritmos com raciocínio lógico e desenvolvimento de código
Aula 10 de algoritmos com raciocínio lógico e desenvolvimento de códigoAula 10 de algoritmos com raciocínio lógico e desenvolvimento de código
Aula 10 de algoritmos com raciocínio lógico e desenvolvimento de código
 
Aula de Algoritmos II - Turma 222
Aula de Algoritmos II - Turma 222Aula de Algoritmos II - Turma 222
Aula de Algoritmos II - Turma 222
 

Strings em C - Funções básicas

  • 1. BIBLIOTECA - STRIGS http://pt.slideshare.net/elainececiliagatto/pc-strings#  STRINGS Profª Ms. Engª Elaine Cecília Gatto Curso de Bacharelado em Engenharia de Computação Universidade do Sagrado CoraçãO – USC Bauru/SP  STRINGS • São sequências, conjuntos ou cadeira de caracteres diversos, sendo representados por aspas; • Em C não existe um tipo STRING explícito; • Não é um tipo primitivo da linguagem; • Não existe uma palavra reservada que declare uma variável do tipo STRING (como acontece em pascal, java, etc); • Em C utiliza-se um vetor ou matriz do tipo CHAR para armazenar uma STRING; • Mas qual o tamanho da STRING? Quando ela termina? • Utilizar um caracter terminador: 0 (null = zero)  forma que as funções reconhecem o fim da string;  STRINGS • Caracteres são blocos de montagem fundamentais dos programas-fonte • Cada programa é composto por uma sequencia de caracteres que, ao serem agrupados de modo significativo, são interpretados pelo computador como uma série de instruções que serão usadas na realização de tarefa • CONSTANTE DE CARACTER: é um valor INT representado por um caracter entre aspas simples • CONJUNTO DE CARACTERES DA MÁQUINA: exemplo o código ASCII  STRINGS • STRING: consistem em uma série de caracteres tratados como uma únic entidade • CARACTERES ESPECIAIS: acentos, pontuação, etc • STRINGS LITERAIS ou CONSTANTES STRINGS: são escritas entre aspas duplas, exemplo: • “João da Silva” • “14-2107-7000”  STRINGS • É um array de caracteres que termina no caractere ‘0’ • O valor de uma STRING é o endereço de seu primeiro caractere • STRINGs são acessadas por meio de um ponteiro para o primeiro caractere da STRING • char cor[] = “azul”; • const char *corPtr = “azul”; • char cor[] = {‘a’, ‘z’, ‘u’, ‘l’, ‘0’}  Strings Constantes • Sempre que o compilador encontra qualquer coisa entre aspas duplas, ele reconhece que se trata de uma string constante. printf( “ %s ”, “ Saudações ”); Posição da memória string 1092 S 1093 A 1094 U 1095 D 1096 A 1096 C 1097 O 1098 E 1099 S 1100 0  SCANF( ) • É uma função da biblioteca padrão de entrada/saída • A função SCANF() lerá caracteres até que se encontre: • Espaço • Tabulação • Nova linha • Indicador de fim de arquivo • Use %s de modo que scanf leia a quantidade de caracteres exatos que você deseja. Exemplo: char word[20]; scanf( “ %19s ”, word);  SCANF( ) #include <stdio.h> #include <stdlib.h> int main(){ char nome[100]; printf("Digite o seu nome: "); scanf("%s", nome); printf("Saudacoes, %s", nome); printf("n "); system("PAUSE"); return 0; } • Observe a saída do programa! Consegue notar o que há de diferente entre a entrada de dados e a saída?  SCANF( ) #include <stdio.h> #include <stdlib.h> int main(){ char nome[100]; printf("Digite o seu nome: "); scanf("%s", nome); printf("Saudacoes, %s", nome); printf("n "); system("PAUSE"); return 0; } • Esta instrução lê cada caractere digitado e os armazena a partir do endereço nome. • O processo termina quando um caractere branco é encontrado. • Nesse ponto é incluído automaticamente o caractere 0 na próxima posição livre. • Não é permitido ultrapassar o limite estipulado na criação do vetor/matriz. • O espaço para 0 deve ser previsto. • A função scanf() entende um espaço em branco como o término da entrada. • Por isso, na saída, apenas o primeiro nome digitado é apresentado.  SCANF( ) #include <stdio.h> #include <stdlib.h> int main(){ char nome[100]; printf("Digite o seu nome: "); scanf("%s", nome); printf("Saudacoes, %s", nome); printf("n "); system("PAUSE"); return 0; } • Mas se digitarmos o nome inteiro sem espaços, observe a saída! • Observe esta instrução novamente. Porque está sendo usado nome e não
  • 2. &nome? • Neste caso, nome é equivalente a &nome[0] • O nome de uma matriz é o seu endereço inicial • Scanf() é muito utilizada para ler uma mistura de tipos de dados numa mesma instrução.  SSCANF( ) INT SSCANF ( CHAR *S, CONST CHAR * FORMAT, ...); • • • • Equivalente a scanf A entrada é lida a partir do array S em vez do teclado Retorna o número de caracteres escritos em S Retorna EOF (END-OF-FILE) se ocorrer um erro • É uma função da biblioteca padrão de entrada/saída • EXEMPLO, LIVRO DEITEL, 8.16  GETS( ) • char *gets (char *s); • Pede ao usuario que entre uma string, que sera armazenada na string s. • O ponteiro que a funcao retorna é o proprio s. • gets nao é uma funcao segura. • Por que? • Porque com gets pode ocorrer um estouro da quantidade de posicoes que foi especificada na string. • É uma função da biblioteca padrão de entrada/saída  GETS( ) #include <stdio.h> #include <stdlib.h> int main(){ char nome[100]; printf("Digite o seu nome: "); gets(nome); printf("Saudacoes, %s", nome); printf("n "); system("PAUSE"); return 0; } • Usada para leitura de textos ; • Propósito: ler unicamente uma cadeia de caracteres do teclado enquano a tecla ENTER não for pressionada; • Todos os caracteres digitados são armazenados, inclusive espaços e tabulações; • O caractere 0 é incluído no final;  GETS( ) #include <stdio.h> #include <stdlib.h> int main(){ char nome[100]; printf("Digite o seu nome: "); gets(nome); printf("Saudacoes, %s", nome); printf("n "); system("PAUSE"); return 0; } • Problemas com esta função: pode armazenar caracteres além da capacidade definida;  GETS( ) #include <stdio.h> #include <stdlib.h> int main(){ char nome[10]; printf("Exemplo de estouro de string. n"); printf("Digite o seu nome: "); gets(nome); printf("Saudacoes, %s", nome); printf("n "); system("PAUSE"); return 0; } • Neste exemplo, é declarado um vetor de tamanho 10, mas o nome digitado contém 20 caracteres. Observe que o vetor armazena 10 caracters a mais do que foi especificado. • Para resolver este problema, deve-se usar FGETS()  GETCHAR( ) • INT GETCHAR (VOID) • É uma função da biblioteca padrão de entrada/saída • Insere o caractere seguinte da entrada-padrão e o retorna como um inteiro • A função getchar() lê um caracter e retorna um inteiro que é: • o código do caracter, ou • o valor -1 que corresponde a fim de ficheiro  GETCHAR( ) /* Exemplo da utilização de getchar */ #include <stdio.h> int main() { char caracter; printf("n"); fflush(stdout); printf("Utilizando getchar()n"); fflush(stdout); printf("------- -------------n"); fflush(stdout); printf("n"); fflush(stdout); printf("Entre com um caracter :"); fflush(stdout); caracter = getchar(); printf("n Você digitou o caracter %c n n", caracter); fflush(stdout); return(0); }  GETCHAR( ) #include<stdio.h> main() { int c; int i=0; while((c = getchar()) != -1) if (c == 'a') i++; printf("Foram lidos %d a's",i); }  FGETS( ) • CHAR *FGETS ( CHAR *S, INT N, FILE *STREAM) • Insere caracteres de fluxo especificado para o array S até que: • um caractere de newline seja lido, ou • fim de arquivo seja encontrado, ou • até que n-1 bytes sejam lidos • Um caractere nulo de finalização é anexado ao array • Retorna a string que foi lida em S • É uma função da biblioteca padrão de entrada/saída  FGETS( ) #include <stdio.h> #include <stdlib.h> int main(){ char nome[15]; printf("Digite o seu nome: "); fgets(nome, 15, stdin); printf("Saudacoes, %s", nome); printf("n "); system("PAUSE"); return 0; } • O código ao lado utiliza fgets. O vetor declarado tem 15 posições e somente essas 15 posições são preenchidas. • Na saída, observa-se que o
  • 3. nome digitado é maior que as 15 posições, e portanto, o restante do nome é desprezado. • STDIN: fluxo padrão de entrada-  PUTS( ) • INT PUTS ( CONST CHAR *S ) • Imprime a string S seguida por um caractere de newline • Retorna um inteiro diferente de zero se for bem sucedida • Retorna um EOF se ocorrer um erro • É uma função da biblioteca padrão de entrada/saída  PUTS( ) #include <stdio.h> #include <stdlib.h> int main(){ char nome[80]; printf("Digite o seu nome: "); gets(nome); puts(""); puts("Saudacoes, "); puts(nome); puts(""); puts("Imprimindo a partir da quarta posicao: "); puts(&nome[4]); puts(""); puts("a funcao puts() pula linha automaticamente!"); puts(""); system("PAUSE"); return 0; } • É o complemento da função gets(); • Propósito: imprimir uma única string por vez; • O endereço da string deve ser enviado para puts como argumento;  PUTCHAR( ) • INT PUTCHAR ( INT C ); • Imprime o caracter armazenado em C e o retorna como um inteiro • É uma função da biblioteca padrão de entrada/saída  SPRINTF( ) • INT SPRINTF ( CHAR *S, CONST CHAR *FORMAT, ... ); • • • • Equivalente a printf A saída é armazenada no array S em vez de impressa na tela Retorna o número de caracteres escritos em S Retorna EOF se ocorrer um erro • É uma função da biblioteca padrão de entrada/saída • EXEMPLO, LIVRO DEITEL, 8.15  SPRINTF( ) #include <stdio.h> int main() { int i; char string1[20]; printf( " Entre um valor inteiro: "); fflush(stdout); scanf("%d", &i); sprintf(string1, "Valor de i = %d", i); puts(string1); return 0; }  FGETS( ) E PUTCHAR( ) #include <stdio.h> void reverse(const char * const sPtr); int main(){ char sentenca[80]; printf(" Digite uma linha de texto: n "); fflush(stdout); fgets(sentenca, 80, stdin); printf(" n A linha impressa na ordem inversa é: n "); fflush(stdout); reverse(sentenca); system("PAUSE"); return 0; } void reverse(const char * const sPtr){ if(sPtr[0] == '0'){ return; } else{ reverse(&sPtr[1]); //recursão putchar(sPtr[0]); //exibe o caractere } }  GETCHAR( ) e PUTS( ) • EXEMPLO, LIVRO DEITEL, 8.14  Inicializando strings char nome[] = {‘E’, ‘l’, ‘a’, ‘i’, ‘n’, ‘e’, ‘0’}; char nome[] = “Elaine”; EXEMPLO: #include <stdio.h> #include <stdlib.h> int main(){ char saudacao[]="Saudacoes, "; char nome[80]; printf(" Digite o seu nome: "); gets(nome); printf("%s%s n", saudacao, nome); system("PAUSE"); return 0; }  STRCPY( ) • CHAR *STRCPY ( CHAR *S1, CONST CHAR *S2 ); • Copia a string s2 no array s1 • O valor de s1 é retornado • É uma função de manipulação de strings  STRCPY( ) #include <stdio.h> #include <stdlib.h> #include <string.h> int main(){ char nome_original[30] ; char nome_copia[30]; printf(" Digite um nome: "); gets(nome_original); strcpy(nome_copia, nome_original); printf(" Nome original: "); puts(nome_original); printf(" Nome copia: "); puts(nome_copia); system("PAUSE"); return 0; } • Copia ou atribui o conteúdo da string de origem para a string de destino. Ambas devem ter, no mínimo, o mesmo tamanho; • Sintaxe: strcpy(string_destino, string_origem);  STRCAT( ) • CHAR *STRCAT ( CHAR *S1, CONST CHAR *S2 ); • Acrescenta a string s2 ao array s1 • O primeiro caractere de s2 sobrescreve o caractere nulo de finalização de s1 • O valor de s1 é retornado • É uma função de manipulação de strings  STRCAT( ) #include <stdio.h> #include <stdlib.h> #include <string.h> int main(){ char cadeia1[100]; char cadeia2[10]; printf(" Digite o seu primeiro nome: "); gets(cadeia1); printf(" Digite o seu segundo nome: "); gets(cadeia2); strcat(cadeia1, cadeia2); printf("%s", cadeia1); puts(""); system("PAUSE"); return 0; } • Concatena o conteúdo da string de
  • 4. origem ao final do conteúdo da string de destino. • Essa função não verifica se a primeira cadeia tem espaço suficiente para que a segunda cadeia seja adicionada ao seu final. • Sintaxe: strcat(string_destino, string origem);  STRNCPY( ) • Char *strncpy ( char *s1, const char *s2, size_t n ) • Copia no maximo n caracteres da string2 no array s1 • O valor de s1 é retornado • É uma função de comparação de strings  STRCPY e STRNCPY //exemplo STRCPY E STRNCPY #include <stdio.h> #include <string.h> int main(void){ char x[] = "Parabéns a você"; char y[25]; char z[15]; printf(" %s %s n %s %s n", "A string no array x é: ", x, "A string no arryz y é: ", y, strcpy(y,x)); fflush(stdout); strncpy(z, x, 14); z[14] = '0'; printf(" A string no array z é: %s", z); fflush(stdout); return 0; }  STRNCAT( ) • Char *STRNCAT ( char *s1, const char *s2, size_t n ) • Acrescenta no máximo n caracteres da string s2 ao array s1. • O primeiro caractere de s2 sobrescreve o caractere nulo de finalização de s1 • O valor de s1 é retornado • É uma função de comparação de strings  STRCMP( ) • INT STRCMP ( CONST CHAR *S1, CONST CHAR *S2 ); • Compara a string s1 com a string s2 • A função retorna 0, menor do que 0 ou maior do que 0 se s1 for igual, menor ou maior do que s2, respectivamente • É uma função de comparação de strings  Função STRCMP( ) • Compara o conteúdo da string 1 com o conteúdo da string 2; • Retorna um número inteiro; • Se forem iguais, a função retorna zero; • Se o número retornado for menor que zero, então a string1 é menor que a string 2; • Se o número retornado for maior que zero, então a string1 é maior que a string2;  STRNCMP( ) • INT STRNCMP ( CONST CHAR *S1, CONST CHAR *S2, SIZE_T N ); • Compara até n caracteres da string s1 com a string s2 • A função retorna 0, o menor do que 0 ou maior do que 0 se s1 for igual, menor ou maior do que s2, respectivamente • É uma função de comparação de strings  STRCMP( ) #include <stdio.h> #include <stdlib.h> #include <string.h> int main(){ char string1[20], string2[20]; int resultado; printf(" Digite uma palavra: "); gets(string1); printf(" Digite uma palavra: "); gets(string2); resultado = strcmp(string1, string2); if(resultado ==0 ){ puts("As strings sao iguais."); } else{ puts("As strings sao diferentes."); } system("PAUSE"); return 0; }  Função STRCMP( )  STRLEN( ) • SIZE_T STRLEN ( CONST CHAR *S ); • Determina o comprimento da string S • O número de caracteres anteriores ao caractere nulo de finalização é retornado  Função STRLEN( ) #include <stdio.h> #include <stdlib.h> #include <string.h> int main(){ char string1[20], string2[20]; int tamanho1, tamanho2; printf(" Digite uma palavra: "); gets(string1); printf(" Digite uma palavra: "); gets(string2); tamanho1 = strlen(string1); tamanho2 = strlen(string2); printf("O tamanho da string1 e: %d", tamanho1); puts(""); printf("O tamanho da string2 e: %d", tamanho2); puts(""); system("PAUSE"); return 0; } • Recebe • • como argumento o endereço de uma string e retorna o seu tamanho; O comprimento do vetor/matriz da string deve ser um a mais que o inteiro retornado por strlen(); O terminador 0 não é contabilizado;  Função STRUPR( ) #include <stdio.h> #include <stdlib.h> #include <string.h> int main(){ char string[20]; printf(" n Escreva uma palavra: "); gets(string); printf(" n String original: %s", string); strupr(string); printf(" n String convertida: %s", string); printf("nn"); system("pause"); return 0; } • Converte o conteúdo da string em letras maiusculas
  • 5.  Função STRLWR( ) #include <stdio.h> #include <stdlib.h> #include <string.h> int main(){ char string[20]; printf(" n Escreva uma palavra com todas as letras em maiusculo: "); gets(string); printf(" n String original: %s", string); strupr(string); printf(" n String convertida: %s", string); printf("nn"); system("pause"); return 0; } • Converte o conteúdo da string em letras minusculas  Conversão de Strings • Biblioteca de utilitários gerais: stdlib.h • Convertem strings de digitos em valores inteiros e de ponto flutuante Double atof ( const char *nPtr ); Converte a string NPTR em double Int atoi ( const char *nPtr ); Converte a string NPTR em int Long atol (const char *nPtr ); Converte a string NPTR em long int Double strtod ( const char *nPtr, char **endPtr ); Converte a string NPTR em double (**  ponteiro de uma string) Long strtol ( const char *nPtr, char **endPtr, int base ); Converte a string NPTR em long Unsigned long strtoul ( const char *nPtr, char **endPtr, int base ); Convertea a string NPTR em unsigned long  Conversão de Strings • EXEMPLOS, LIVRO DO DEITEL  STRCHR( ) • CHAR *STRCHR ( CONST CHAR *S, INT C ); • Localiza a primeira ocorrência do caractere C na string S • Se C for encontrado, um ponteiro para C em S é retornado • Caso contrário, um ponteiro NULL é retornado • É uma função de pesquisa • EXEMPLO 8.23, LIVRO DEITEL  STRCSPN( ) SIZE_T STRCSPN ( CONST CHAR *S1, CONST CHAR *S2 ); • Determina e retorna o tamanho do segmento incial da string s1 que consiste apenas em caracteres contidos na string s2 • Exemplo 8.24, livro do deitel • É uma função de pesquisa  STRSPN( ) • SIZE_T STRSPN ( CONST CHAR *S1, CONST CHAR *S2 ); • Determina e retorna o tamanho do segmento inicial da string s1 que consiste em caracteres não contidos na string s2 • Exemplo 8.27, livro deitel • É uma função de pesquisa  STRPBRK( ) CHAR *STRPBRK ( CONST CHAR *S1, CONST CHAR *S2 ); • Localiza a primeira ocorrência na string s1 de qualquer caractere na string s2 • Se um caractere da string s2 for encontrado, um ponteiro para o caractere na string s1 é retornado • Caso contário, um ponteiro NULL é retornado • É uma função de pesquisa • Exemplo 8.25, livro deitel  STRRCHR( ) • Char *strrchr ( const char *s, int c ); • Localiza a última ocorrência de C na string S • Se C for encontrado, um ponteiro para C na string S é retornado • Caso contrário, um ponteiro NULL é retornado • É uma função de pesquisa • Exemplo 8.26, livro do deitel  STRSTR( ) • CHAR *STRSTR ( CONST CHAR *S1, CONST CHAR *S2 ); • Localiza a primeira ocorrência na string S1 da string S2 • Se a string for encontrada, um ponteiro para a string em S1 é retornado • Caso contrário, um ponteiro NULL é retornado • É uma função de pesquisa • Exemplo 8.28, livro do deitel  STRTOK( ) • CHAR *STRTOK ( CHAR *S1, CONST CHAR *S2); • Uma sequencia de chamadas para STRTOK separa a string s1 em tokens separados por caracteres contidos na string s2 • TOKENS: partes lógicas. Exemplo: palavras em uma linha de texto • A primeira chamada contém S1 como primeiro argumento, e para que as chamadas seguintes continuem a separar tokens na mesma string, elas deverão conter NULL como primeiro argumento • Um ponteiro para o token em vigor é retornado por cada chamada. • Se não houve mais tokens quando a função for chamada, NULL será retornado • É uma função de pesquisa • exemplo 8.29, livro deitel  Exercícios 1. Desenvolver um programa que obtenha as seguintes informações para os “n” colegas da sua turma de Programação de Computadores: variavel qtde caracteres nome 15 sobrenome 30 endereço 80 telefone 10 idade 3 • Realize as seguintes tarefas: • Copie
  • 6. o nome do seu colega para uma variável denominada nome2; • Concatene o sobrenome à variável nome2;  Exercícios • Obtenha o tamanho da variável nome2; • Imprima todas as informações de cada um dos seus colegas na tela; 2. Faça um programa em C que leia 10 strings, imprima o tamanho de cada uma delas e troque as letras para maiusculas. Dica: use o FOR. 3. Troque as letras do exercício anterior, por minusculas. 4. Escreva um programa em C que receba o nome, a idade e o sexo de 10 pessoas e armazene, em um vetor/matriz, as pessoas que forem do sexo masculino e maiores de 18 anos.  Exercícios 5. Escreva um programa que faça a seguinte pergunta ao usuário: “Quem é o criador da Linguagem C?”. O usuário deve escrever a resposta e o programa deve verificar: • Se o usuário responder corretamente, uma mensagem de “parabéns, voce acertou!”, deve ser emitida; • Se o usuário responder incorretamente, uma mensagem de “que pena, voce errou!”, deve ser emitida.