Linguagem C: Operações com Strings

De Aulas

Links relacionados: Programação em C

C não tem strings?

Na linguagem de programação C, strings são vetores de caracteres, por isso não podemos simplesmente fazer uma atribuição de valores tal como é feito em um tipo primitivo. Uma exceção é na criação da variável. Por exemplo:

char estado[50] = "Santa Catarina"; // válido

/* Se não definirmos o tamanho da string, ela vai ter
o tamanho da string passada na inicialização. */
char nome[] = "John Snow"; // válido

nome = "Arya Stark"; // inválido

// Usamos funções para manipular as strings
strcpy(nome, "Arya Stark"; // válido

Função strcpy()

Atribui um valor texto para uma variável do tipo string.

Exemplo

 1#include <stdio.h>
 2#include <string.h>
 3
 4int main() {
 5    char str1[30] = "string simples";
 6    char str2[40];
 7    char str3[40];
 8    strcpy (str2, str1);
 9    strcpy (str3, "copiado com sucesso");
10    printf ("str1: %s\nstr2: %s\nstr3: %s\n", str1, str2, str3);
11}

Função strncpy()

A função strncpy' copia os n primeiros caracteres de uma string para outra. Contudo, isso pode causar overflow, sendo necessário definir onde termina a string destino. Para isso, coloca-se o terminador \0 no no final da string.

 1#include <stdio.h>
 2#include <string.h>
 3
 4int main() {
 5    char nome_completo[30] = "Saulo Popov Zambiasi";
 6    char nome[10];
 7    strncpy(nome, nome_completo, 5); // Pode causar overflow
 8    nome[5] = '\0'; // Necessário adicionar terminador no final
 9    puts(nome_completo);
10    puts(nome);
11}

Função strcat()

Faz a concatenação de duas strings. O primeiro parâmetro receberá o valor dele mesmo, concatenado com o segundo parâmetro da função.

 1#include <stdio.h>
 2#include <string.h>
 3
 4int main () {
 5    char str[80];
 6    char str2[] = "concatenada.";
 7    strcpy (str, "Esta string ");
 8    strcat (str, "foi ");
 9    strcat (str, str2);
10    puts (str);
11}

Função strcmp()

Essa função faz a comparação entre duas strings, seguindo caractere por caractere a partir do primeiro. Primeiro verifica se o primeiro caractere da primeira string é igual ao primeiro caractere da segunda, se forem iguais, segue para o caractere seguinte. O algoritmo continua até que os caracteres forem diferentes ou encontrar o final de uma das strings.

A função retorna como resultado um valor inteiro:

< 0 :  o primeiro caractere diferente da primeira string tem um valor menor que o da segunda string.
0   :  as strings são iguais.
> 0 :  o primeiro caractere diferente da primeira string tem um valor maior que o da segunda string.

Exemplo

 1#include <stdio.h>
 2#include <string.h>
 3
 4int main() {
 5    printf("%d\n", strcmp("abc", "abc"));
 6    printf("%d\n", strcmp("abc", "abcd"));
 7    printf("%d\n", strcmp("abcd", "abc"));
 8    printf("%d\n", strcmp("abc", "abx"));
 9    printf("%d\n", strcmp("abx", "abc"));
10}

Função strlen()

Retorna o tamanho da string no formato size_t (%zu), um alias para unsigned int.

1#include <stdio.h>
2#include <string.h>
3
4int main() {
5    char nome[] = "Misato";
6    char estado[30] = "Santa Catarina";
7    printf("tamanho de %s é %zu\n", nome, strlen(nome));
8    printf("tamanho de %s é %zu\n", estado, strlen(estado));
9}