21
Centro de Ciências Exatas e Tecnológicas CET150 - Processamento de Dados I Prof. Marcos Bião Aula – 11 Strings

11 - string - C

Embed Size (px)

Citation preview

Page 1: 11 - string - C

Centro de Ciências Exatas e TecnológicasCET150 - Processamento de Dados I

Prof. Marcos Bião

Aula – 11 Strings

Page 2: 11 - string - C

Definição•A string é uma cadeia de caractere, ou seja, sequencia de letras e símbolos

•Em C, uma cadeia de carácter é representada por um vetor de tipo char e é terminada por um '/0'.

Page 3: 11 - string - C

Declaração•A declaração de uma string é como já vimos ate então:

•char nome[20];•char endereco[300],rua[70];

Page 4: 11 - string - C

Leitura•Para ler uma string podemos utilizar o scanf:– scanf(“%s”,&nome);

•Porem podemos ter alguns problemas com relação ao buffer do teclado.•Uma solução é fazer o seguinte:– scanf(“\n%s”,&nome);

•Um outro problema que temos com o scanf é que ele guarda o nome ate encontrar um <ESPAÇO>,<TAB> OU <ENTER>.

Page 5: 11 - string - C

Leitura•Uma outra solução para leitura de strings é utilizar a função gets.

•Ela pode ser utilizada da seguite forma:– gets(nome);

•Com ela não temos o problema do buffer nem do “espaço”

Page 6: 11 - string - C

Escrita•A escrita pode ser feita pelo printf:– printf(“%s”,nome);

•Uma outra função que pode ser utilizada é o puts– puts(“Meu nome é %s”,nome)– A função puts ja pula uma linha automaticamente

Page 7: 11 - string - C

Funções de manipulação•Vejamos agora algumas funções para manipulação de strings:

– strlen(char *s)– Função que retorna o tamanho de caracteres

int main()

{

char nome[6]="marcos";

printf("%d",strlen(nome));

return 0;

}

Page 8: 11 - string - C

Funções de manipulação– strcpy(char *dest,char *orig)– Função que copia o valor de uma variavel string para outra.

int main()

{

char nome2[6],nome[6]="marcos";

strcpy(nome2,nome);

printf("%s",nome2);

return 0;

}

Page 9: 11 - string - C

Funções de manipulação– strncpy(char *dest,char *orig,int x)– Função que copia os X primeiros caracteres de uma variavel string

para outra.

int main()

{

char nome2[6],nome[6]="marcos";

strcpy(nome2,nome,3);

printf("%s",nome2);

return 0;

}

Page 10: 11 - string - C

Funções de manipulação– strcat(char *dest, char *orig)– Função que concatena 2 strings;

int main(){

char nome[6]="Marcos",sobrenome[6]="Biao";

char nomeCompleto[20];

strcat(nomeCompleto,nome);

strcat(nomeCompleto," ");

strcat(nomeCompleto,sobrenome);

printf("%s",nomeCompleto);

return 0;

}

Page 11: 11 - string - C

Funções de manipulação– strncat(char *dest,char *orig,int x)– Função que concatena 2 strings;

int main(){

char nome[6]="Marcos",sobrenome[6]="Biao";

char nomeCompleto[20];

strcat(nomeCompleto,nome);

strcat(nomeCompleto," ");

strcat(nomeCompleto,sobrenome);

printf("%s",nomeCompleto);

return 0;

}

Page 12: 11 - string - C

Funções de manipulação– strcmp(char *lhs, char *rhs)– Função que retorna 0 se as strings forem iguais;

int main(){

char nome[10]="Marcos",sobrenome[10]="Marcosss";

if(strncmp(nome,sobrenome)==0){

printf("nomes iguais");

}

return 0;

}

Page 13: 11 - string - C

Funções de manipulação– strncmp(char *lhs, char *rhs, int x)– Função que retorna 0 se os X primeiros caracteres forem iguais;

int main(){

char nome[10]="Marcos",sobrenome[10]="Marcosss";

if(strncmp(nome,sobrenome,6)==0){

printf("nomes iguais");

}

return 0;

}

Page 14: 11 - string - C

Funções de manipulação– memset(char *nome, char letra, int x)– Função que coloca o caracter “letra” nas X primeiras posições de

nome;

int main(){

char nome[10]="Marcos";

memset(nome,'a',2);

printf("%s",nome);

}

Page 15: 11 - string - C

Funções de manipulação– strupr(char *nome)– Função que converte todos os caracteres de “nome” me maiusculo;

int main(){

char nome[10]="Marcos";

printf("%s",strupr(nome);

}

Page 16: 11 - string - C

Funções de manipulação– strlwr(char *nome)– Função que converte todos os caracteres de “nome” me minusculo;

int main(){

char nome[10]="Marcos";

printf("%s",strlwr(nome);

}

Page 17: 11 - string - C

Funções de manipulação– int contachar(char nome, char letra)– Função que conta quantas vezes “letra” aparece em “nome”;

int contachar(char string[], char letra){

int cont, tamanho, ocorrencia = 0;

tamanho = strlen(string);

for(cont=1;cont <= tamanho;cont++)

if(string[cont] == letra)

ocorrencia++;

return(ocorrencia);

}

Page 18: 11 - string - C

Funções de manipulação– int strstr(char nome, char subnome)– Função que retorna a primeira posição do “subnome” em “nome”

char string[20],substring[20];

char *extrai;

int tamanho;

printf("\n");

printf("Localizando uma substring dentro da string\n");

printf("------------------------------------------\n");

printf("\n");

printf("Entre com a string :");

scanf("%s",&string);

printf("\n");

printf("Entre com a substring :");

scanf("%s",&substring);

tamanho = strlen(substring);

extrai = strstr(string,substring);

printf("\n");

if(extrai)

{

printf("A string contém a substring.\n");

printf("A substring começa na posição %d.\n",extrai-string);

printf("A substring tem %d caracteres.\n",tamanho);

}

else

printf("A string não contém a substring.\n");

Page 19: 11 - string - C

Funções de manipulação– strrev(char *nome)– Função que inverte os caracteres de “nome”;

int main(){

char nome[10]="Marcos";

printf("%s",strrev(nome);

}

Page 20: 11 - string - C

Funções de manipulação– NOME PALIDROMO– Função que inverte os caracteres de “nome”;

int main(){

char nome[10]="Marcos";

printf("%s",strrev(nome);

}

Page 21: 11 - string - C

Funções de manipulação– strrev(char *nome)– Função que inverte os caracteres de “nome”;

int main(){

char nome[10]="Marcos";

printf("%s",strrev(nome);

}