Prévia do material em texto
LAPRO I
Prof. Dr. Rafael Garibotti
Pontifícia Universidade Católica do Rio Grande do Sul
Faculdade de Informática - FACIN
v Baseado no material cedido pelos Profs. Dr. Marco Mangan e Dr. Matheus Trevisan
STRINGS
AULA SOBRE:
STRINGS
1
Ø Conceito:
ü É um conjunto de caracteres, ou seja, em C são vetores de caracteres.
ü Tamanho da string: deve ser um caractere maior que o máximo tamanho
armazenado. É possível seu tamanho na declaração.
char buffer[50];
ü Utiliza-se (‘\0’) para informar final da string.
• O último caractere não pode ser utilizado!
• Neste exemplo, apenas as posições de 0 a 48 são possíveis, onde a
posição 49 deve possuir um \0.
ü Headers para manipulação de strings.
#include <string.h>
STRINGS
2
Variável Conteúdo
M
A
R
I
A
\0
10
11
12
13
14
15
[0]
[1]
[2]
[3]
[4]
[5]
nome
Ø Declaração:
char nome[6];
Ø Atribuição entre strings:
ü Uma das maneiras de fazer
atribuição é de posição por posição.
ü strings sempre comeca̧m na posição
zero (0).
nome[0] = 'M';
nome[1] = 'A';
Endereço de
memória
STRINGS
3
Ø Exemplo:
#include <stdio.h>
int main(){
char nome1[6];
nome1[0] = 'M';
nome1[1] = 'A';
nome1[2] = 'R';
nome1[3] = 'I';
nome1[4] = 'A';
nome1[5] = '\0';
printf("O nome é %s\n", nome1);
printf("A terceira letra da string é %c\n", nome1[2]);
return 0;
}
STRINGS
4
Ø Leitura de strings do teclado:
ü Função gets()
• Lê string até o primeiro enter.
• Observação: a função gets() não realiza qualquer verificação de limites na
string. Logo, se o usuário inserir uma string maior que o tamanho definido, a
função escreverá a string ultrapassando seus limites.
ü Função scanf()
• Lê string até o primeiro espaço em branco.
Ø Exemplo:
...
char palavra[20];
gets(palavra);
scanf("%s", palavra);
...
STRINGS
5
#include <string.h>
Ø C suporta uma ampla gama de funções de manipulação de strings.
ü strcpy(str1, str2)
• Copia str2 em str1.
ü strcat(str1, str2)
• Concatena str2 ao final de str1.
ü int tam = strlen(str1)
• Retorna o tamanho de str1.
ü int valor = strcmp(str1, str2)
• Retorna 0 se str1 e str2 são iguais; < que 0 (zero) se str1<str2; > que 0 (zero)
se str1>str2.
STRINGS
6
Ø Exemplo:
#include<stdio.h>
#include<string.h>
int main() {
char nome1[12], nome2[12], nome3[15];
strcpy(nome1, "Carolina");
strcpy(nome2, "Rodrigo");
strcpy(nome3, "Ana Julia");
printf("Nome1 é %s\n", nome1);
printf("Nome2 é %s\n", nome2);
printf("Nome3 é %s, tamanho: %lu\n", nome3, strlen(nome3));
return 0;
}
STRINGS
7
Ø Exemplo:
#include<stdio.h>
#include<string.h>
int main() {
char nome1[5], nome2[6], nome12[12]={'\0'};
strcpy(nome1, "Jose");
strcpy(nome2, "Maria");
strcat(nome12, nome1);
strcat(nome12, " ");
strcat(nome12, nome2);
printf("Concatenação de nomes é %s.\n", nome12);
return 0;
}
STRINGS
8
Ø Exemplo:
#include<stdio.h>
#include<string.h>
int main() {
char s1[80], s2[80];
gets(s1);
gets(s2);
printf("Comprimentos: %lu %lu\n", strlen(s1), strlen(s2));
if(strcmp(str1,str2) == 0)
printf("Strings iguais.\n");
strcat(s1, s2);
printf("%s \n", s1);
strcpy(s1, "Isto é um teste.\n");
printf("%s \n", s1);
return 0;
}
Ø Se for digitado "alo" e "alo":
Comprimentos: 3 3
Strings iguais.
aloalo
Isto é um teste.
ATIVIDADE
LABORATÓRIO
9
Ø As atividades do laboratório da aula de hoje estão no Moodle.