You are on page 1of 34

COMPUTAO E

DESENVOLVIMENTO
DE ALGORITMOS II
Aula 5 Strings

Guilherme Alberto Wachs Lopes, M.Sc.


O que o tipo char ?

Representa 1 bytes (8 bits)

Ou seja: um valor entre 0 e 255 ( 2^8 )

Normalmente utilizado para representar


caracteres
O que o tipo char ?

A representao de um caracter dada atravs de um


nmero entre 0 e 255.

Esse nmero segue um padro conhecido entre diversos


sistemas computacionais: a tabela ASCII
O que o tipo char ?
Como a tabela ASCII?

Vamos Programar!
E o que String?
String um vetor de char !

char minha_string[10]; //Declarando uma string

Uma particularidade de string que seu ltimo caractr


NULO. Isso indica o final de uma String.
Caractere vs String
Deve-se ter muita ateno ao saber com qual tipo de
dados est se trabalhando.

Em linguagem C, as strings so representadas por aspas


duplas, enquanto os caracteres usam aspas simples.
Caractere vs String
Deve-se ter muita ateno ao saber com qual tipo de
dados est se trabalhando.

Em linguagem C, as strings so representadas por aspas


duplas, enquanto os caracteres usam aspas simples.

Exemplo de strings:
Uma String
Caractere vs String
Deve-se ter muita ateno ao saber com qual tipo de
dados est se trabalhando.

Em linguagem C, as strings so representadas por aspas


duplas, enquanto os caracteres usam aspas simples.

Exemplo de strings:
Uma String
Programando em C
Aprendendo a representar uma string em C
A
B
Caractere vs String
Deve-se ter muita ateno ao saber com qual tipo de dados
est se trabalhando.

Em linguagem C, as strings so representadas por aspas


duplas, enquanto os caracteres usam aspas simples.

Exemplo de Caracteres:
a
b
!
z
1
Caractere vs String
diferente!!

A A
Caractere vs String
diferente!!

A A

Caractere A Vetor de caracteres:


ou A \0
Nmero: 65 0 1
Strings
Strings
Declarao:

Por se tratar de um vetor do tipo char, uma


string declarada como vetores.

Ateno: String como vetores tm seu tamanho


resolvido em tempo de compilao. Deste
modo, <tamanho> deve ser uma constante
numrica inteira, ou uma macro. Jamais uma
varivel.
Strings
Para imprimir uma string em um dispositivo de sada, usa-
se a funo printf, explicitando no argumento de
formatao a string %s.

Exemplo:
Imprime a string Minha String... na tela.
printf(%s, Minha string...);
Imprime o contedo da string nome na tela
printf(%s, nome);
Imprime o contedo das strings dia, mes e ano.
printf(%s de %s de %s, dia, mes, ano);
Strings
Impresso
Exemplo: imprimindo a string Linguagem C
puts(Linguagem C);
Imprimindo o contedo da string nome
puts(nome);

Diferenas entre printf e puts:


Ao final da string impressa, h puts adiciona uma mudana automtica
de linha;
No possvel imprimir mais de uma string utilizando o puts
Strings
A leitura de strings pode ser feita atravs dos
seguintes comandos:
scanf
gets
fgets
Strings
Leitura de Strings:
Para ler uma string em um dispositivo de entrada, usa-se a
funo scanf, explicitando no argumento de formatao a
string %s.
Exemplo:

scanf(%s, nome);

Problema do uso do scanf:


O scanf entende que a string acaba no primeiro espao
em branco.
Assim, palavras compostas no sero lidas por esta
funo.
Strings
Leitura de Strings com gets:
Exemplo:

gets(nome);

Problema do uso do gets:


Com o uso da funo gets para ler uma string, se uma cadeia maior
que o tamanho de criao da string for digitada, os caracteres
excedentes sero transportados para a sequencia de memria que
no pertence string, o que pode gerar comportamentos
inesperados do programa.
Strings
Leitura de Strings com fgets:
Exemplo:

fgets(nome, 10, stdin);

Problema do uso do fgets:


Com o uso da funo fgets para ler uma string, se uma string de
tamanho maior que o segundo argumento for digitada, apenas
aquela quantidade de caracteres ser transferida para a string,
sendo os demais desprezados.
Strings
Exemplo de utilizao de string:

void main() {

char msg[] = {'O', 'l', 'a', ' ',


'M', 'u', 'n', 'd', 'o', '!', '\n' ,'\0'};

printf("%s", msg);

}
Strings
Exemplo de utilizao de string:

void main(){

char s[50];
char s2[] = "Minha String";

strcpy(s, "Imprimindo ");


strcat(s, s2);
printf("%s", s);

}
Strings
Exemplo de utilizao de string:

void main(){

char *str = declaracao como ponteiro para char;

printf(%s, str);

}
Strings
string.h: uma biblioteca padro da linguagem C com
objetivo de manipular strings.

Principais funes:
int strlen (char*);
Retorna o comprimento de uma string sem contar seu terminador (\0).
char * strcpy (char *, char *);
Copia a segunda string na primeira.
char * strcat (char *, char*);
Concatena a segunda string na primeira.
int strcmp (char *, char *);
Compara strings. Retorna 0, negativo, ou positivo se forem iguais, se
a primeira for menor que a segunda ou a primeira for maior que a
segunda, respectivamente.
Strings
string.h: uma biblioteca padro da linguagem C com
objetivo de manipular strings.

Principais funes:
char *strupr (char*);
Converte e retorna a string recebida em maisculos.
char * strlwr (char *);
Converte e retorna a string recebida em minsculos.
char * strtok(char * s1, char *s2);
Uma sequncia de chamadas para strtik separa a string s1 em tokens
(partes lgicas). Os tokens so separados entre si observando os caracteres
contidos em s2. A primeira chamada contm s1 como primeiro argumento, e
para que as chamadas seguintes continuem a separar tokens na mesma
string, elas devero conter NULL como primeiro argumento. Um ponteiro para
o token devolvido a cada chamada. Se no existirem mais tokens, NULL
retornado.
Strings
string.h: uma biblioteca padro da linguagem C com
objetivo de manipular strings.

Principais funes de memria:


void *memcpy(void *s1, const void *s2, size_t n);
Copia n caracteres do objeto apontado por s2 no objeto apontado por s1.
Um ponteiro para o objeto resultante retornado.
void *memmove(void *s1, const void *s2, size_t n);
Compia n caracteres do objeto apontado por s2 no objeto apontado por
s1. A cpia realizada
int *memcmp(void *s1, const void *s2, size_t n);
void *memset(void *s, int c, size_t n);
Strings e Stdio
Principais funes de manipulao:
int sprintf ( char * str, const char * format, ... );
Imprime o mesmo texto que seria impresso com printf porm na string str.
Retorna o nmero total de caracteres escritos em str.

int sscanf ( const char * s, const char * format, ...);


L a string s assim como o scanf faria com a entrada padro. Retorna o
nmero de items que foram lidos.
Strings
E se eu quiser fazer um vetor de strings?

Podemos pensar em uma matriz de char?

Como ficaria a declarao?


Strings
E se eu quiser fazer um vetor de strings?

Podemos pensar em uma matriz de char?

Como ficaria a declarao?

char meses[12][10];
strcpy(meses[0], Janeiro);
strcpy(meses[1], Fevereiro);
...
strcpy(meses[11], Dezembro);
Strings
E se eu quiser fazer um vetor de strings?

H outra maneira?
Vetores de ponteiros para char

char *strings[12];
string[0] = Janeiro;
string[1] = Fevereiro;
...
string[11] = Dezembro;
Strings
Curiosidade:

Por que a funo main definida como:

void main(int argc, char* args[]) ?


Strings
Curiosidade:

Por que a funo main definida como:

void main(int argc, char* args[])

Esta funo recebe um inteiro como primeiro


argumento.
Strings
Curiosidade:

Por que a funo main definida como:

void main(int argc, char* args[])

Esta funo recebe um inteiro como primeiro


argumento.
Mas, e o segundo argumento? O que ?
Strings
Curiosidade:

Por que a funo main definida como:

void main(int argc, char* args[])

Esta funo recebe um inteiro como primeiro


argumento.
Mas, e o segundo argumento? O que ?
Vetores de ponteiros para char
Strings
Brincando com os argumentos...

Exemplos em aula

You might also like