Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Luthien

Concatenar strings usando aritmetica de ponteiros

Recommended Posts

tenho q fazer uma função ou procedimento q concatena a string origem na string destino usando aritmetica de ponteiros, tentei assim e nao deu certo:

void StrCat(char *origem, char* destino)
{
    int i = 0;
    char cont;


    while(*(origem + i) != '/0')
        {
            i++;
        }


        printf("Concatenacao: %s", strcat(origem[i],*destino));
}

e no main:

char origem[20], destino[20];

 printf("------------------------CONCATENACAO DE STRINGS------------------------- \n");
    printf("\n\nDigite a string Origem: ");
    fflush(stdin);
    fgets(origem,20,stdin);


    printf("\n\nDigite a string Destino: ");
    fflush(stdin);
    fgets(destino,20,stdin);


    StrCat(origem, *destino);

Eu fiz um procedimento mas acho q deveria ser função, o problema é q eu nao sei oq retornar na minha função e nao sei se usei o strcat da maneira certa...

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não use fflush(stdin).
StrCat está errado (vai dar undefined ou algo parecido). É strcat (tudo minúsculas).

 

http://linux.die.net/man/3/strcat

 

char *strncat(char *dest, const char *src, size_t n);

 

The strcat() function appends the src string to the dest string, overwriting the terminating null byte ('\0') at the end of dest, and then adds a terminating null byte. The strings may not overlap, and the dest string must have enough space for the result. If dest is not large enough, program behavior is unpredictable; buffer overruns are a favorite avenue for attacking secure programs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é necessário o uso de "contadores".

 

Como é apenas um ponteiro para uma variável, incrementar seu valor não causará efeitos, dito isto.

 

Vamos usar os operadores: ++, *, !=, =.

void StrCat (const char* origem, char* destino)
{
    // Primeiro localizar o caractere nulo, *destino é equivalente a destino[0].
    // '\0' = Caractere nulo ou zero.
    while(*destino != '\0')
        // Atenção: (*destino)++ é diferente de destino++, pense nisto.
        destino++;

    while(*origem != '\0')
        // Atenção: (*destino)++ é diferente de *destino++, pense nisto também.
        *destino++ = *origem++;
    *destino = '\0';
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.