Em
C,
strings
são
vetores
de
char.
PONTO.
SEM
MAIS.
É
um
vetor
de
char
com
um
caractere
de
final
de
string
(\0)
no
final.
A
gente
até
tem
funções
específicas
de
strings,
mas,
como
strings
são
vetores
de
char,
no
fundo
essas
funções
lidam
com
vetores
de
char.
A
gente
só
não
vê
isso.
Vamos
à
declaração:
 char
string[]
=
“palavrinha”;
//prefiro
esse
jeito,
ele
já
fica
do
tamanho
do
que
eu
colocar
 char
string[20]
=
“palavrinha”;
//declarando
o
tamanho
eu
posso
preencher
depois
 char
*string
=
“palavrinha”;
//no
me
gusta
OBSERVAÇÃO
IMPORTANTE:
char string[] = “aeiou” é DIFERENTE de char string[] = {'a',
'e', 'i', 'o', 'u'}. O primeiro é uma string e contém o caractere
\0 para delimitar seu final, então tem 6 posições. O segundo é um
vetor de char comum, com 5 posições e nenhum \0.
 Voltando.
Temos
funções
pra
facilitar
nossa
vida
na
hora
de
lidar
com
strings.
Vou
fazer
uma
tabelinha,
acho
mais
fácil.
Aí
chega.
A
tabela
(só
com
as
principais):
| 
    
Função 
 | 
  
    
Descrição 
 | 
  
    
Uso 
 | 
 
| 
    
strlen 
 | 
  
    
Devolve
   o
   tamanho
   da
   string 
 | 
  
    
int
   i
   =
   strlen(minha_string); 
 | 
 
| 
    
strcpy 
 | 
  
    
Copia
   a
   string
   de
   origem
   pra
   de
   destino 
 | 
  
    
strcpy
   (destino,
   origem); 
 | 
 
| 
    
strcat 
 | 
  
    
Acrescenta
   a
   string
   de
   origem
   no
   final
   da
   de
   destino 
 | 
  
    
strcat
   (destino,
   origem); 
 | 
 
| 
    
strcmp 
 | 
  
    
Compara
   duas
   strings
   e
   retorna
   um
   número: 
     >0
   caso
   a
   primeira
   seja
   maior
   que
   a
   segunda 
     0
   caso
   sejam
   iguais 
     <0
   caso
   a
   segunda
   seja
   maior 
Ex:
   strcmp
   (“menino”,
   “menina”)
   retorna
   >0
   pois
   no
   finalzinho,
   'o'
   é
   alfabeticamente
   maior
   que
   'a'. 
 | 
  
    
i
   =
   strcmp
   (primeira,
   segunda); 
i
   =
   stricmp
   (primeira,
   segunda); 
 | 
 
| 
    
stricmp 
 | 
  
    
Igual
   a
   anterior,
   só
   que
   ignora
   maiúsculas
   e
   minúsculas 
 | 
 |
| 
    
strchr 
 | 
  
    
Procura
   um
   caractere
   dentro
   de
   uma
   string.
   Retorna
   o
   índice
   dele
   ou
   -1
   se
   não
   existir. 
 | 
  
    
i
   =
   strchr(string,
   char); 
 | 
 
| 
    
strstr 
 | 
  
    
Procura
   uma
   string
   dentro
   de
   outra
   string.
   Retorna
   o
   índice
   dela
   ou
   -1
   se
   não
   existir. 
 | 
  
    
i
   =
   strstr(procurar,
   ser_procurada); 
 | 
 
| 
    
strlwr 
 | 
  
    
Passa
   toda
   a
   string
   pra
   minúsculas 
 | 
  
    
sua_string
   =
   strlwr(sua_string); 
 | 
 
| 
    
strupr 
 | 
  
    
Passa
   toda
   a
   string
   pra
   maiúsculas 
 | 
  
    
sua_string
   =
   strupr(sua_string); 
 | 
 
| 
    
toupper 
 | 
  
    
Passa
   um
   caractere
   pra
   maiúscula
   (precisa
   da
   biblioteca
   ctype.h) 
 | 
  
    
String[5]
   =
   toupper(string[5]); 
 | 
 
| 
    
tolower 
 | 
  
    
Passa
   um
   caractere
   pra
   minúscula
   (precisa
   da
   biblioteca
   ctype.h) 
 | 
  
    
String[5]
   =
   tolower(string[5]); 
 | 
 
 AH,
AH,
pra
imprimir
string
no
printf
usa
%s.
Pode
usar
puts(sua_string),
aí
ele
já
muda
de
linha,
mas
é
a
mesma
coisa
que
printf
com
%s.
Pra
ler,
o
scanf
com
%s
funciona,
mas
quando
ele
vê
um
espaço,
tab
ou
enter
ele
para
de
ler.
Portanto,
eu
acho
melhor
a
função
gets(variavel_de_destino),
que
pega
os
espaços.
Quem
passou
pelo
problema
da
leitura
dar
errado use
a
função
fflush(stdin)
depois
da
leitura
que
isso
não
acontece
mais. Essa função limpa o buffer de entrada.
Nenhum comentário:
Postar um comentário