argcv

codes and stuff

Strcat() “caseira”

leave a comment »

A função strcat(), cujo protótipo se encontra no arquivo de cabeçalho string.h, recebe str1 e str2 e devolve str1, com o conteúdo de str2 copiado para o seu final. str2 não é alterada. Observe seu protótipo:

char *strcat(char *str1, const char *str2);

Naturalmente, em um programa em que essa função se faz necessária, é melhor que você a use direto. Não há nenhum motivo para reinventar a roda.

Mas como exercício pode ser interessante fazer uma versão própria da função, pra ter uma ideia legal de como ela pode funcionar.

Pensando nisso é que a sua construção é proposta em um exercício da apostila do Curso de Linguagem C, da UFMG (ótima apostila, aliás). E eu resolvi fazer. E se interessar a alguém, cá está, já inserida em um programinha para que ela possa ser testada.

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

char *strcat_caseira(char *str1, const char *str2);

void main() {
    char str1[80] = "isto é";
    char str2[80] = " um teste!";

    strcat_caseira(str1, str2);

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

char *strcat_caseira(char *str1, const char *str2) {
    int i = strlen(str1), j;

    for (j = 0, i; str2[j]; j++, i++) str1[i] = str2[j];
    str1[i] = '\0'; // coloca o terminador nulo em str1

    return str1;
}

Até mais.

Anúncios

Written by rntreis

abril 18, 2012 às 8:26 pm

Publicado em C, dicas, programação

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: