#include <condefs.h> #pragma hdrstop #include <stdio.h> #include <stdlib.h> /* Ingresar dos cadenas de caracteres de no mas de 50 caracteres en la memoria dinámica. Llamar a un procedimiento que devuelva otra cadena de caracteres con las dos cadenas concatenadas y que tenga exactamente la cantidad de términos más el caracter nulo. */ //--------------------------------------------------------------------------char* unir(char* m, char *n ) { char *c = (char*)malloc(sizeof(char)*(strlen(m)+strlen(n)+1 ) ); int i, j; for( i = 0; i < strlen(m);i++) { c[i]=m[i]; } j = i; for(i = 0; i < strlen(n); i++,j++) { c[j]=n[i]; } c[j]='\0'; return c; //observar que no se libera la memoria correspondiente a la variable } #pragma argsused main() { char *a,*b,*c; a = (char *)malloc(sizeof(char)*51); b = (char *)malloc(sizeof(char)*51); printf("entre primer cadena ");gets(a); printf("entre segunda cadena ");gets(b); c = unir(a,b); free(a); free(b); printf("%s\t%d\n", c, strlen(c) ); free(c);//observar que se DEBE liberar la memoria alocada en c en algún //lado en este caso aquí system("pause"); } 1