El programa debe duplicar las letras de una palabra introducida y devolver el número de letras de la original. Todo ello desde una función (Duplicar()). La función también debe reservar memoria dinámica para la nueva palabra.
¿Debo reservar memoria para la primera palabra también? ¿La reserva de memoria la debo de hacer en la función o en el main? Tal como tengo el programa ahora no devuelve la palabra duplicada a no ser que lo ponga así:
(Quitando free(palabra2) y escribiendo *palabra2=(char *)malloc(*nl*sizeof(char)+1); en vez de palabra2=(char *)malloc(*nl*sizeof(char)+1);)
Código C:
Ver original
void Duplicar(char *palabra, char *palabra2, int *nl) { int i=0; int j=0; while(palabra[i]!='\0') i++; *nl=i; i=0; while(palabra[i]!='\0') { palabra2[j]=palabra[i]; j++; palabra2[j]=palabra[i]; i++; j++; } palabra2[j]='\0'; }
Así que intuyo que el problema está en malloc y como lo utilizo, muchas gracias por vuestra ayuda.
Código C:
Ver original
#include <stdio.h> #define LNX 9999 void Duplicar(char *, char *, int *); main() { char word[LNX],word2[LNX]; int letras=0; Duplicar(word,word2,&letras); return 0; } void Duplicar(char *palabra, char *palabra2, int *nl) { int i=0; int j=0; while(palabra[i]!='\0') i++; *nl=i; i=0; while(palabra[i]!='\0') { palabra2[j]=palabra[i]; j++; palabra2[j]=palabra[i]; i++; j++; } palabra2[j]='\0'; }