Escolar Documentos
Profissional Documentos
Cultura Documentos
Strings
Eduardo C. Xavier
28 de Junho de 2017
Roteiro
1 Strings
Definição de Strings em C
Leitura e Escrita de Strings
Inicialização de Strings
Strings: Exemplos
2 Biblioteca string.h
3 Processamento de Texto
4 Exercícios
Definição
Uma string em C corresponde a um vetor de caracteres terminado pelo
caractere especial ’\0’.
st [0] = ’o ’ ;
st [1] = ’ l ’ ;
st [2] = ’a ’ ;
p r i n t f ( "%s \n" , s t ) ;
}
Mas as vezes será impresso uma palavra diferente, como "ola8uj", pois
não identificamos o final da string.
st [0] = ’o ’ ;
st [1] = ’l ’;
st [2] = ’a ’ ;
st [3] = ’ \0 ’ ;
p r i n t f ( "%s \n" , s t ) ;
}
p r i n t f ( " D i g i t a d o : %s e %d\n" , s t , i d ) ;
}
p r i n t f ( " D i g i t a d o : %s e %d\n" , s t , i d ) ;
}
Para ler strings incluindo espaços use o comando fgets cuja sintaxe
é:
fgets(identificador, limite, stdin);
onde identificador é o nome da variável para onde será lida a string,
limite-1 é a quantidade máxima de caracteres que poderá ser lida, e
stdin é uma palavra reservada que indica que a leitura se dará da
entrada padrão.
Neste comando serão lidos todos os caracteres até a quebra de linha, e
todos serão armazenados na variável, incluindo a quebra de linha. Ao
final é incluído um ’\0’ .
Caso limite-1 caracteres tenham sido lidos, a função para a leitura
antes da quebra de linha.
i n t main ( ) {
char st [ 8 0 ] ;
int id ;
p r i n t f ( " D i g i t a d o : %s e %d\n" , s t , i d ) ;
}
f g e t s ( st , 80 , s t d i n ) ;
// Determinamos o f i n a l da s t r i n g
fim = 0;
w h i l e ( s t [ f i m ] != ’ \0 ’ && s t [ f i m ] ! = ’ \n ’ )
f i m ++;
...
}
f g e t s ( st , 80 , stdin );
// D e t e r m i n a m o s o final da s t r i n g
...
// E s c r e v e m o s o s c a r a c t e r e s na i n v e r s a
i = f i m −1;
j =0;
w h i l e ( j <f i m ) {
stInv [ j ] = st [ i ] ;
i −−;
j ++;
}
s t I n v [ f i m ]= ’ \0 ’ ;
#i n c l u d e < s t d i o . h>
i n t main ( ) {
char st [ 8 0 ] , s t I n v [ 8 0 ] ;
i n t i , j , fim ;
f g e t s ( st , 80 , stdin );
// D e t e r m i n a m o s o f i n a l da s t r i n g
fim = 0;
w h i l e ( s t [ f i m ] != ’ \0 ’ && s t [ f i m ] ! = ’ \ n ’ )
f i m ++;
// E s c r e v e m o s o s c a r a c t e r e s na i n v e r s a
i = f i m −1;
j =0;
w h i l e ( j <f i m ) {
stInv [ j ] = st [ i ] ;
i −−;
j ++;
}
s t I n v [ f i m ]= ’ \0 ’ ;
f g e t s ( st , 80 , s t d i n ) ;
// Determinamos o f i n a l da s t r i n g
f o r ( f i m = 0 ; s t [ f i m ] != ’ \0 ’ && s t [ f i m ] != ’ \n ’ ; f i m++)
;
// E s c r e v e m o s o s c a r a c t e r e s na i n v e r s a , s t 2
f o r ( i=fim −1 , j =0; j <f i m ; i −−, j ++)
stInv [ j ] = st [ i ] ;
s t I n v [ f i m ]= ’ \0 ’ ;
i n t main ( ) {
c h a r s 1 [ 8 0 ] = " o l a " , s 2 [ 8 0 ] = " turma de 1 0 2 ! " ;
// c o n c a t e n a s 2 no f i n a l de s 1
s t r c a t ( s1 , s 2 ) ;
p r i n t f ( "%s \n" , s 1 ) ;
}
Saída será
o l a turma de 1 0 2 !
i n t main ( ) {
c h a r s 1 [ 8 0 ] = " aab " , s 2 [ 8 0 ] = " a a c " ;
int r ;
r = s t r c m p ( s1 , s 2 ) ;
i f ( r < 0)
p r i n t f ( "%s vem a n t e s que %s \n" , s1 , s 2 ) ;
e l s e i f ( r >0)
p r i n t f ( "%s vem a n t e s que %s \n" , s2 , s 1 ) ;
else
p r i n t f ( " s a o i g u a i s \n" ) ;
}
Saída será
aab vem a n t e s que a a c
i n t main ( ) {
char s1 [ 8 0 ] , s2 [80]= " o l a p e s s o a l " ;
s t r c p y ( s1 , s 2 ) ;
p r i n t f ( "%s \n" , s 1 ) ;
}
Saída será
ola pessoal
i n t main ( ) {
char s1 [80]= " o l a p e s s o a l " ;
int t ;
t = s t r l e n ( s1 ) ;
p r i n t f ( "%d\n" , t ) ;
}
Saída será
11
fgets (s , 80 , stdin );
w h i l e ( s [ i ] ! = ’ \ n ’ && s [ i ] != ’ \0 ’ ) { // E n q u a n t o não t e r m i n o u o t e x t o
w h i l e ( s [ i ]== ’ ’ ) // P u l a p o s s í v e i s e s p a ç o s
i ++;
// Achou o começo de uma p a l a v r a ou o f i m do t e x t o
i f ( s [ i ] ! = ’ \ n ’ && s [ i ] ! = ’ \0 ’ ) { // Se a c h o u uma p a l a v r a
n++; // i n c r e m e n t a numero de p a l a v r a s
w h i l e ( s [ i ] ! = ’ ’ && s [ i ] != ’ \ n ’ && s [ i ] ! = ’ \0 ’ ) // p a s s a pela palavra
i ++;
}
}
p r i n t f ( " T o t a l de p a l a v r a s : %d \ n " , n ) ;
}
A resposta é 2 , 7 e 9.
tamP = s t r l e n ( p a l ) −1;
tamT = s t r l e n ( t e x ) −1; //O −1 é p e l o \ n
i n t main ( ) {
char tex [ 8 0 ] , pal [ 8 0 ] ;
int i , j , iguais ;
i n t tamP , tamT ;
tamP = s t r l e n ( p a l ) −1;
tamT = s t r l e n ( t e x ) −1; //O −1 é p e l o \ n