Computação
Eletrônica
Strings em C
Prof. Leandro Almeida
Adaptado de Ameliara Freire
Strings

Strings em C





Em C não há o tipo de dado String, deve-se
usar um vetor de caracteres, com uma posição
para cada caractere e uma extra para um
delimitador ‘\0’ (null).
Declaração: char identificador[dimensão + 1];
Exemplo: char str[8] = “EXEMPLO”;
=>char str[8] = {‘E’, ‘X’, ‘E’, ‘M’, ‘P’, ‘L’, ‘O’, ‘\0’};
As funções de manipulação de Strings
armazenam automaticamente o ‘\0’
2
Strings

Strings em C


Constantes: (Entre aspas duplas)
“UFRPE” = ‘U’ ‘F’ ‘R’ ‘P’ ‘E’ ‘\0’
Exemplo:
char exemplo[10] = “UFRPE”;
Processando Strings

Cada elemento do vetor é um caractere e pode ser
acessado individualmente
Um elemento ‘\0 significa o fim do vetor.
3
Strings

Strings em C

Exemplo:
main( ) {
char nome[10] = “exemplo”;
printf(“%s”, nome);
printf(“%c”, nome[0]);
}
4
Caracteres

Entrada e saída para caracteres

getchar e putchar

int getchar()




recebe um único caractere.
Armazena a entrada até que <ENTER> (‘\n’) seja
pressionado.
retorna como um inteiro.
int putchar(int c)


imprime um único caractere passado como inteiro.
retorna o mesmo inteiro
5
Caracteres

Entrada e saída
#include <stdio.h>
#include <conio.h>
main( )
{
int c;
printf( "Digite um caracter:");
c = getchar( );
printf("\nValor inteiro: %d",c);
printf( "\nInfo digitada: ");
putchar( c );
getche();
}
6
Strings

Entrada e saída usando gets e puts:

gets – faz a leitura de uma linha até digitar
<enter>



Incluindo espaços, caracteres especiais, números,
acentos, etc.
O “fflush(stdin)” deve vir antes, principalmente quando
o gets é usado dentro de um laço de repetição.
puts – realiza a apresentação do vetor lido com
gets

A impressão também pode ser realizada usando printf
7
Ajustando o scanf

Para ler cadeias de caracteres com scanf
devemos alterar a string controle:


scanf("%[^\n]s", nome);
Ou

scanf("%99[^\n]s", nome);
Strings

Entrada e saída usando scanf e printf:
#include <stdio.h>
#include <conio.h>
main( )
{
char str[100];
printf( "Digite uma informacao:");
scanf(“%s”, str);
printf( "\nInfo digitada: ");
printf("\n%s",str);
getche();
}
9
Strings

Entrada e saída usando gets e puts:
#include <stdio.h>
#include <conio.h>
main( )
{
char str[100];
printf( "Digite uma informacao:");
fflush(stdin);
gets(str);
printf( "\nInfo digitada: ");
puts( str );
printf("\n%s",str);
getche();
}
10
Strings

Entrada e saída para strings

scanf: lê strings até que um espaço em branco
seja encontrado. Exemplo:
#include <stdio.h>
main(){
char nome[40];
printf(“Digite seu nome:”);
scanf(“%s”, nome);
printf(“Boa noite %s”, nome);
}
11
Strings

Funcoes de manipulacao de strings e
caracteres





strcopy(a,b): faz uma copia de todos os caracteres de
b para a.
strcat(a,b): adiciona os caracteres da string b à string
a
strcmp(a,b): compara duas strings caracter por
caracter e retorna 0 se elas forem iguais. Nunca
compare strings usando o operador ==.
islower(char): diz se o caracter é minusculo
isupper(char): diz se um caracter é maiusculo
12
13
14
Strings

Funcoes de manipulacao de strings e
caracteres



strlen(char[] a): devolve o tamanho da string a
tolower(char): devolve o caracter para minusculo
toupper(char): devolve o caracter pra maiusculo
15
Exercicio

Faça um programa que solicita o usuario
digitar o nome e endereco completo
(armazenando em duas strings). Em seguida
o programa imprime na tela o que foi
digitado.
16
Exercicio




Faça um programa que solicita o usuário digitar o
nome e sobrenome
Em seguida o programa solicita ao usuário digitar
rua, numero, bairro, cidade (capturando todos os
dados como string).
Finalmente o programa concatena o nome e
sobrenome e mostra na tela.
Depois o programa concatena os dados do
endereço e imprime o endereço de uma só vez.
17
1) Elabore um programa que receba uma linha de texto e conte as vogais apresentando o
respectivo histograma na seguinte forma:
Exemplo:
Linha de texto passada: “Na próxima quarta-feira é feriado.”
a:
e:
i :
o:
u:
****** (6)
*** (3)
*** (3)
** (2)
* (1)
Tomar cuidado com letras em maiúsculo. Pode ser necessário o uso de funções
apresentadas na aula sobre strings.
1) Implemente um programa que receba uma linha de texto, retire os espaços em
excesso existentes deixando apenas um espaço entre as várias palavras. As alterações
de quantidade de espaços em branco devem ser realizadas diretamente no vetor do
texto. Não deve ser utilizado vetor auxiliar.
18
Download

Aula 9 - Strings e teclado