domingo, 17 de outubro de 2010

[Programação em C] - Concatenar strings

Olá pessoal, nesse post iremos aprender a concatenar (juntar) duas strings sem utilizar a função strcat. A função strcat é uma função do cabeçalho string.h.

Não iremos utilizar a função strcat, pois as vezes é bom você implementar algo que determinadas funções fazem a nivel de conhecimento.

Veja o exemplo de código abaixo:

// www.GeeksBR.com

#include <stdio.h>

int main(int argc, char *argv[])
{
 char str1[10] = "geeks";
 char str2[3] = "br";
 int tam1 = 0, tam2 = 0, tam_total, i, j;

 // pegando o tamanho da string str1
 while(str1[tam1] != '\0')
    tam1++;

 // pegando o tamanho da string str2
 while(str2[tam2] != '\0')
    tam2++;

 // tamanho total da string final
 tam_total = tam1 + tam2;

 for(i = tam1, j = 0; i < tam_total; i++, j++)
    str1[i] = str2[j];
 
 str1[i] = '\0';

 printf("str1: %s\n", str1);
 return 0;
}

Linha 7: declaração da string "str1", nessa linha também faço a inicialização dela atribuindo o nome "geeks". Perceba que coloquei 10 o tamanho de "str1" porque irei concatenar a string "str2" com a "str1", ou seja, irei adicionar a string "str2" na string "str1".

Linha 8: declaração e inicialização da string "str2".

Linhas 12 e 13: esse while irá contar a quantidade de caracteres de "str1". Lê-se "enquanto o caractere i de str1 for diferente de '\0'". '\0' é o último caractere de uma string, por isso utilizamos ele como critério de parada do comando de repetição while. A variável "tam1" é incrementada na linha 13.

Linhas 16 e 17: esse while irá contar a quantidade de caracteres de "str2".

Linha 20: pego o tamanho total e guardo na variável "tam_total", essa variável será o limite, ou seja, até onde eu devo ir para adicionar os caracteres de str2 em str1.

Linha 22: comando "for", variável "i" recebe "tam1", ou seja, começará de "tam1". A variável "i" será o índice de str1. A variável "j" será o índice de str2. Perceba que a variável "j" é inicializada com 0 pois começaremos a percorrer str2 do começo. Já a variável "i" é inicializada com "tam1" pois NÃO podemos começar a percorrê-la do começo, mas sim do final dela, porque senão iríamos sobrescrevê-la. A condição de parada do "for" é "enquanto i for menor que tam_total".

Linha 23: caractere por caractere da string str2 é adicionado à string str1.

Linha 25: toda string termina com '\0', então é adicionado à str1.

Linha 27: mostra na tela a string str1.

Clique aqui para fazer o download do código

Quaisquer dúvidas deixem nos comentários, até a próxima!


Nenhum comentário: