Linguagem C: Operações com Strings
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}