SlideShare uma empresa Scribd logo
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

PDF
Vetores, Matrizes e Strings em C Parte 3
PDF
Vetores, Matrizes e Strings em C Parte 1
PPTX
Linguagem C - Vetores, Matrizes e Funções
PPTX
Linguagem C - Vetores
PDF
Canivete shell
PPT
Aula4
PPT
Php
Vetores, Matrizes e Strings em C Parte 3
Vetores, Matrizes e Strings em C Parte 1
Linguagem C - Vetores, Matrizes e Funções
Linguagem C - Vetores
Canivete shell
Aula4
Php

Mais procurados (20)

KEY
Python 02
PPT
Aula5 introducao c
PPT
Aula5 introducao c
PDF
Cheat sheet Mips 32 bits
PDF
Minicurso Shell Script
PDF
Shell Script v0
PPT
Standard ML / CPN ML
PDF
Programando em python funcoes
ODP
Introducao ao Shell Script
KEY
Python 03
PDF
PDF
Pascal apostila
PDF
Cool 3 assembly para linux
PDF
Minicurso php
PPT
PHP - Arrays
PPTX
KEY
Python 01
PDF
Fugindo para as colinas com Python - Julio Biason - Tchelinux Bento Gonçalves...
Python 02
Aula5 introducao c
Aula5 introducao c
Cheat sheet Mips 32 bits
Minicurso Shell Script
Shell Script v0
Standard ML / CPN ML
Programando em python funcoes
Introducao ao Shell Script
Python 03
Pascal apostila
Cool 3 assembly para linux
Minicurso php
PHP - Arrays
Python 01
Fugindo para as colinas com Python - Julio Biason - Tchelinux Bento Gonçalves...
Anúncio

Destaque (14)

PDF
Cb embrapa workshop insumos
PPTX
Grupo 1
PPT
Folia pra que
PPS
Propuestas Curso 2009 2010
PPTX
DOC
Maths project brief sept project - statistics
PDF
Ficha tcnica
PPT
FOLIA!
PPT
Beneficios da Folia
PPT
Meu primeiro beijo.enviar
PPTX
Taller no 3
PDF
Aula 04a rev_27_08_12_adm_prod_tgpi
PDF
Business Connectivity Solution
PPTX
psicología humanista
Cb embrapa workshop insumos
Grupo 1
Folia pra que
Propuestas Curso 2009 2010
Maths project brief sept project - statistics
Ficha tcnica
FOLIA!
Beneficios da Folia
Meu primeiro beijo.enviar
Taller no 3
Aula 04a rev_27_08_12_adm_prod_tgpi
Business Connectivity Solution
psicología humanista
Anúncio

Semelhante a Biblioteca strings profª ms (20)

PPTX
Linguagem C - Strings
PDF
unidade04-c3-handout.pdf
PDF
Linguagem c wellington telles - aula 03
PDF
Aula 14 - Entrada e Saida em linguagem C.pdf
PPT
Aula 14 - Entrada e Saida em linguagem C.ppt
PDF
PHP - Strings
ODP
Linguagem C 02 String
PPTX
Algoritmo e lógica de programação - aula 2
PDF
comparativo entre linguagens python c++ java.pdf
PPT
Introdução a Linguagem C
PDF
Linguagem C (Parte 2)
PPT
Curso Completo de Linguagem de Programação C
ODP
Linguagem C 09 Ponteiros
PDF
Strings em php
PDF
Canivete shell
PDF
[Curso Java Basico] Aula 63: printf
PDF
Linguagem C (Parte 5)
PDF
Comandos de Controle de Programa em C
PPTX
Aula 10 de algoritmos com raciocínio lógico e desenvolvimento de código
Linguagem C - Strings
unidade04-c3-handout.pdf
Linguagem c wellington telles - aula 03
Aula 14 - Entrada e Saida em linguagem C.pdf
Aula 14 - Entrada e Saida em linguagem C.ppt
PHP - Strings
Linguagem C 02 String
Algoritmo e lógica de programação - aula 2
comparativo entre linguagens python c++ java.pdf
Introdução a Linguagem C
Linguagem C (Parte 2)
Curso Completo de Linguagem de Programação C
Linguagem C 09 Ponteiros
Strings em php
Canivete shell
[Curso Java Basico] Aula 63: printf
Linguagem C (Parte 5)
Comandos de Controle de Programa em C
Aula 10 de algoritmos com raciocínio lógico e desenvolvimento de código

Biblioteca strings profª ms

  • 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.