Você está na página 1de 9

MC102, Aula 13 Biblioteca string.

h
Prof.: Fbio Augusto Menocci Cappabianco

Bibliotecas

Vistas:

<stdio.h> - Entrada e sada de dados. <math.h> - Funes matemticas. <string.h> - Manipulao de strings.

Nova:

Funes da Biblioteca string.h


strlen(<string>) retorna inteiro com tamanho da <string>. strcmp(<str1>,<str2>) retorna em um inteiro se <str1> maior, igual ou menor a <str2>. strcat(<str1>,<str2>) <str1> recebe <str1>+<str2>, onde + a concatenao das strings. strcpy(<str1>,<str2>) copia <str2> sobre <str1>.

Funes da Biblioteca string.h


strncpy(<str1>,<str2>,m) como strcpy, mas copia no mximo m caracteres. strncmp(<str1>,<str2>,m) como strcmp, mas compara no mximo m caracteres. strnlen(<str>,m) como strlen, mas retorna no mnimo entre m e o tamanho de <str>. strncat(<str1>,<str2>,m) como strcat, mas concatena no mximo m caracteres de <str2> a <str1>.

Perigos e observaes

As funes de manipulao de strings devem ser utilizadas com testes para se ter uma noo exata de como funcionam. O nico jeito de aprender testar, testar e testar. Examine o exemplo a baixo com cuidado, faa testes com ele e amplieo com o exerccio no final da aula.

Exemplo: cadastro de pessoa.


#include <stdio.h> #include <string.h> int main() { char primeiro_nome[21], sobrenome[21], completo[42], cpf[12]; int t; do{ printf("Entre com o seu nome:"); fgets(primeiro_nome,21,stdin); printf("Entre com o seu sobrenome:"); fgets(sobrenome,21,stdin); t = strcmp(primeiro_nome,sobrenome);

Continuao cadastro de pessoa.


if ( t == 0 ){ printf("O nome deve ser diferente do sobrenome.\n"); } } while( t == 0 ); t = strlen(primeiro_nome); strncpy(completo, primeiro_nome, t - 1); completo[t-1] = ' '; t = strlen(sobrenome); strncat(completo, sobrenome, t - 1);

Continuao cadastro de pessoa.


do{ printf("Entre com o CPF:"); fgets(cpf,12,stdin); t = strlen(cpf); if ( t != 11 ) { printf("O CPF deve conter 11 dgitos.\n"); } } while( t != 11 ); printf("\n\nSeus dados:\n\nNome:%s\nCPF:%s\n", completo,cpf); return 0; }

Exerccio

No programa de cadastro faa um controle mais rgido dos dados:

O nome e o sobrenome no devem conter nmeros ou smbolos. O CPF deve conter apenas nmeros. Faa uma entrada com controle para a data de nascimento sendo a entrada na forma dd/mm/aaaa, onde dd o dia, mm o ms e aaaa o ano.