Luthien 0 Denunciar post Postado Setembro 9, 2014 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
_Isis_ 202 Denunciar post Postado Setembro 9, 2014 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
Mateus GP 13 Denunciar post Postado Setembro 11, 2014 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