Você está na página 1de 17

Strings

Introduo

Definio de strings.

Criao/Declarao de strings.

Inicializao de strings.

Manipulao de strings.

Exemplos.

Universidade Metodista de Angola, Departamento de Engenharias 1


Strings

definies
Uma string uma sequncia, um conjunto, ou uma cadeia de
caracteres.
Uma string um conjunto de caracteres armazenados num
vector de caracteres, cujo o ultimo elemento o carcter nulo
\0.
Uma string um vector de caracteres terminado com o carcter
nulo
O carcter nulo o carcter cujo o codigo ASCII vale 0.
O carcter nulo tambm representado por \0.
As strings so tipo de dados no primitivos da linguagem C para
guardar uma palavra.
Lembre-se que os tipos de dados bsicos ou primitivos em
linguagel C so: int, float, double e char.

Universidade Metodista de Angola, Departamento de Engenharias 2


Strings
Tabela ASCII - American Standard Code Information Interchange

Universidade Metodista de Angola, Departamento de Engenharias 3


Strings
Declarao e inicializao de strings

Tal como nas variveis e vectores


Uma string pode ser inicializada no momento da sua criao.
Uma string pode ser inicializada aps a sua criao.

Exemplo de declarao e inicializao de strings

char str1[12] = Gustavo; Ao efectuar essa operao o caracter \0 colocado automaticamente


no final da cadeia de caracteres

char str2[ ] = Edna;

char str3[4] = Campos; /* d erro */

Universidade Metodista de Angola, Departamento de Engenharias 4


Strings
Exemplo de declarao e inicializao de strings

char str1[ 12 ] = Gustavo;

Conjunto de caracteres a ser atribudo ao vector str1

Tamanho do vector str1


Nome do vector
Tipo de vector, as strings so vectores de caracteres

Universidade Metodista de Angola, Departamento de Engenharias 5


Strings
Exemplo de declarao e inicializao de strings
char str1[12] = Gustavo;

O compilador reserva 12 posies de memria


Como a cadeia Gustavo tem 7 caracteres, esse caracteres so guardados nas
12 posies, e as restantes posies sero inicializadas automaticamente pelo carcter \0

st1 G u s t a v o \0 \0 \0 \0 \0

0 1 2 3 4 5 6 7 8 9 10 11

char str2[ ] = Edna;

O compilador reserva 4 + 1 posio de memria


4 posies para guardar os caracteres Edna e 1 posio para guardar o carcter \0

char str3[4] = Campos;

D erro de compilao, O tamanho da cadeia de vectores maior que o nmero de


posies de memoria reservadas
Reservou-se 4 posies de memria, mas a cadeia Campos contem 6 caracteres

Universidade Metodista de Angola, Departamento de Engenharias 6


Strings
Exemplo de declarao e inicializao de strings

O caracter \0 usado para representar o fim da string

Algumas Dicas

char numero[5] = 2009; vs int num = 2009;

A varivel numero ocupa 5 bytes A varivel num ocupa 4 bytes


em memria 4 + 1. em memria.

char str[ ] = A; vs char ch = A;

str ocupa 2 bytes , ch ocupa 1 bytes ,


caracter A , 1 byte
caracter \0 , 1 byte

Universidade Metodista de Angola, Departamento de Engenharias 7


Strings

Existem funes para leitura de strings do teclado:

gets() : get string

scanf() : scan formated

Existem funes para escrita de strings no ecr:

puts() : put string

printf() : print formated

Universidade Metodista de Angola, Departamento de Engenharias 8


Strings
Exemplo de um programa que l uma string do teclado e imprime a string no ecr

Exemplo usando as funes gets e puts Exemplo usando as funes scanf e printf

#include <stdio.h> #include <stdio.h>


#include <stdlib.h> #include <stdlib.h>

int main(){ int main(){


/*declaraes de variveis*/ /*declaraes de variveis*/
char str[10]; char str[10];

puts(insira uma string: ); printf(insira uma string: );


gets(str);
puts(a string insirida : ); scanf(%s, str);
puts(str);
print(a string insirida : );
exit(0);
} printf(%s,str);

Imprime a cadeia de caracteres exit(0);


}
L a cadeia de caracteres

No tem o smbolo & %s permite imprimir uma string

Universidade Metodista de Angola, Departamento de Engenharias 9


Strings
Manipulao de strings
Existem varias funes para manipulao de strings predefinidas
em linguagem C.
A manipulao de strings envolve o seguinte:
Determinar o comprimento da string.
Copiar uma string para uma outra posio de memria.
Concatenar ou juntar strings.
Comparao de duas strings
Procurar um caracter dentro de uma string
Procurar uma substring dentro de uma string
Etc.
Para usar essas funes o programador deve incluir a directiva
#include <string.h>

Universidade Metodista de Angola, Departamento de Engenharias 10


Strings
Manipulao de strings
As funes mais utilizadas para manipulao de strings
predefinidas em linguagem C so as seguintes:
strlen - string lenght - calcula o comprimento de uma string

strcpy - string copy - cpia de uma string para outra

strcat - string concatenation - concatenao de strings

strcmp - string compare - comparao de strings

strstr - substring over string - verifica a

Etc.

Universidade Metodista de Angola, Departamento de Engenharias 11


Strings
A tabela que se segue apresenta algumas funes predefinidas em linguagem C incluindo
algumas funes de manipulao de strings.

Nome da funo Tipo de argumento e retorno Directiva

pow float pow(float x, float y){ #include <math.h>


/* . . Cdigo . . */
}
putchar int putchar(int ch){ #include <stdio.h>
/* . . Cdigo . . */
}
exit void exit(int code){ #include <stdlib.h>
/* . . Cdigo . . */
}
strlen int strlen(char *s){ #include <string.h>
/* . . Cdigo . . */
}
strcpy char *strcpy(char *dest, char *orig){ #include <string.h>
/* . . Cdigo . . */
}
strcat char *strcat(char *dest, char *orig){ #include <string.h>
/* . . Cdigo . . */
}

Universidade Metodista de Angola, Departamento de Engenharias 12


Strings

Nome da funo Tipo de argumento e retorno Directiva

strcmp int strmcp(char *str1, char *str2){ #include <string.h>


/* . . Cdigo . . */
}
strstr char *strstr(char *str1, char *str2){ #include <string.h>
/* . . Cdigo . . */
}

As funes j esto predefinidas.


Segundo a teoria das funes, no importante saber o contedo ou o cdigo de cada funo
predefinida, mas sim o que cada funo faz.

Funo strlen
Recebe uma string e devolve o tamanho da string ou seja o nmero de caracteres que constitui
a string excluindo o caracter \0.
Exemplo: strlen(Gustavo); devolve o inteiro 7.

Universidade Metodista de Angola, Departamento de Engenharias 13


Strings

Funo strcpy
Essa funo permite copiar a string orig para a string dest.
Exemplo:
char nome[12]; /*declarao da string*/
strcpy(nome, Gustavo); /*a cadeia de caracteres Gustavo copiada para string nome*/

Funo strcat
Essa funo permite concatenar a string orig com a string dest e o resultado da concatenao
guardado na string dest .
Exemplo:
char nome[12] = Edna; /*declarao da string*/
strcat(nome, Ximbi); /*a cadeia de caracteres resultante ser EdnaXimbi e ser guardada na
variavel nome*/

Universidade Metodista de Angola, Departamento de Engenharias 14


Strings

Funo strcmp
Essa funo permite comparar duas strings.
A funo devolve um inteiro negativo se str1 for menor alfabeticamente em relao a str2.
A funo devolve 0 (zero) se str1 for igual a str2.
A funo devolve um inteiro positivo se str1 for maior alfabeticamente em relao a str2.
Exemplo:
char nome1[12]=Gustavo; /*declarao da string*/
char nome2[12]=Campos; /*declarao da string*/
int numero;
strcmp(nome1, nome2); /*devolve um nmero positivo*/
strcmp(nome1, nome1); /*devolve 0*/
strcmp(nome2, nome1); /*devolve um nmero negativo*/

Universidade Metodista de Angola, Departamento de Engenharias 15


Strings
Exemplo de manipulao de strings

Escreva um programa em Linguagem C que executa as seguinte operaes:


1. L dois nomes do teclado.
2. Apresenta quantos caracteres cada nome possui.
3. Imprime os dois nomes no ecr por ordem alfabtica.
4. Apresenta a concatenao das duas strings/nomes no ecr.

Soluo:
Criar duas strings para guardar os dois nomes a ser lidos, criar uma terceira string para guardar
a concatenao das duas strings, e usar as funes predefinidas de manipulao de strings.
1. Podemos usar as funes gets ou scanf para ler as duas strings do teclado.
2. Podemos uar a funo strlen para calcular o tamanho de cada string.
3. Podemos usar a funo strcmp para determinar qual das strings maior por ordem alfabetica.
4. Podemos usar a funo strcat para concatenar as duas strings no ecr.

Universidade Metodista de Angola, Departamento de Engenharias 16


Strings
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(){
/*Declarao das strings*/
char nome1[10];
char nome2[10];
int tamanho1;
int n;
/*Leitura dos dois nomes do teclado*/
printf(insira um nome: );
scanf(%s,nome1);
printf(a string insirida : );
scanf(%s,nome2);
/*Calculo do tamanho das strings*/
tamanho1 = strlen(nome1);
printf(\ntamanho 1: %d,tamanho1);
printf(\ntamanho 2: %d,strlen(nome2));
/*Escrever os nomes por ordem alfabticas*/
n = strcmp(nome1,nome2);
if(n > 0)
printf(%s\n%s,nome2,nome1);
else
printf(%s\n%s,nome1,nome2);
/*Concatenao de strings*/
strcat(nome1,nome2);
printf(%s\n,nome1);

exit(0);

Universidade Metodista de Angola, Departamento de Engenharias 17

Você também pode gostar