Você está na página 1de 12

Programação em C/C++

Funções e estruturas
Strings
Strings

Em C, strings são vetores de carateres


terminados pelo carater nulo ('\0’).
Por exemplo:
char nome[] = {'P', 'e', 'd', 'r', 'o', '\0'};
Strings

Funções da biblioteca <string.h>


Função strlen
 A função strlen retorna o tamanho, em carateres,
de uma string dada.
 Na verdade, o strlen procura o terminador de
string e calcula a distância dele ao início da
string. char nome[15] = "Maria da Silva";
int s = strlen (nome);
// s conterá o valor 14
Função strcpy
 A função strcpy copia o conteúdo de uma string
para outra e coloca um terminador de string. Sua
sintaxe é strcpy (destino, origem). Por exemplo:
char nome[] = "Clarice Lispector";
char nome2[] = "Oswald de Andrade";
strcpy (nome, nome2);
// agora nome conterá "Oswald de Andrade"
Função strncpy
 Se a string a ser copiada for maior que a string de destino,
provavelmente gravará dados em lugares indesejados. Para
evitar esse problema, existe uma função strncpy, que
recebe um terceiro argumento que corresponde ao número
máximo de caracteres a serem copiados:
 char msg[] = "Bom dia!"; char nome[] = "Maria da Silva";
 strncpy (msg, nome, strlen(msg)); // msg terá "Maria da"
Função strcat
 Concatena duas strings, adicionando o conteúdo da
segunda ao final da primeira, além do terminador (\0).
 Note que a primeira string deve ter espaço suficiente para
conter a segunda, para que não ocorra um "estouro de
buffer". Por exemplo:

char nome[50] = "Maria"; char sobrenome[] = " da Silva";


strcat (nome, sobrenome); // contém "Maria da Silva"
Função strcmp
 Para comparar o conteúdo de duas strings, o
utilizador deve usar a função strcmp (ou suas
variantes):
int strcmp (char *s1, char *s2);
Função strcmp
 O valor de retorno é:
A) menor que zero se s1 for menor que s2;
B) igual a zero se s1 e s2 são iguais;
C) maior que zero se s1 for maior que s2.

 A comparação é entre a primeira letra que difere nas duas


strings. Assim, se tivermos s1 = "abc" e s2 = "abd", diremos que
s2 é maior que s1, pois na primeira posição em que as duas
strings diferem, a letra em s2 é "maior".
Função strcmp
 É importante notar que a comparação feita por strcmp
distingue maiúsculas de minúsculas. As variantes mais usadas
de strcmp são:

A) strncmp - compara apenas os n primeiros caracteres das


duas strings, sendo n um terceiro argumento.

B) stricmp - compara duas strings sem distinção entre


maiúsculas e minúsculas. A sintaxe é igual à de strcmp.
Função sprintf
 A diferença entre printf e sprintf é que printf retorna
o resultado para a saída padrão (ecrã), enquanto
sprintf retorna o resultado em uma variável.
 Isto é muito conveniente, porque o utilizador pode
simplesmente digitar a frase que quer ter e a função
sprintf lida com a própria conversão e coloca o
resultado na string que deseja.
#include <stdio.h>
#include <string.h>

int main() {
char var[256];
char sobrenome[] = "Simpson";
char nome[] = "Homer";
int idade = 30;
sprintf(var, "%s %s tem %d anos", sobrenome, nome, idade);
printf ("Resultado: %s\n", var);
return 0;
}

Você também pode gostar