cual es el error en este codigo en el lenguaje de programacion c??

Iniciado por fedemaxrul, 20 Noviembre 2016, 17:43 PM

0 Miembros y 1 Visitante están viendo este tema.

fedemaxrul

el programa es muy simple, quiero colocar la cadena s2 al final de la cadena s1, no me funciona, me muestra las cadenas originales
#include <stdio.h>
void strcat(char*s1,char*s2);
int main()
{
char s1[50]="federico\0";
char s2[]="agustina\0";
printf("%s\n",s1);
printf("%s\n\n",s2);
strcat(s1,s2);
printf("%s\n",s1);
printf("%s\n",s2);
return 0;
}
void strcat(char*s1,char*s2)
{
   while(*s1++);
   while(*s2)
   {
       *s1++ = *s2++;
   }
}



Mod: Los códigos deben ir en etiquetas GeSHi

engel lex

while(*s1++);

cuando haces esto, el puntero queda en el '\0'... así que cuando vas a

*s1++ = *s2++;

escribes justo despues del '/0'

Citarfederico\0agustina\0

y bueno, creo que entiendes las consecuencias en el printf

aprende a usar el debugger de tu ide para poder detectar estos problemas
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.