Ver Mensaje Individual
  #3 (permalink)  
Antiguo 22/04/2012, 11:47
alexg88
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años, 6 meses
Puntos: 344
Respuesta: Problema al inicializar cadenas con punteros

Pues es muy sencillo, dentro de la función inicializarCadenas, estás asignando al puntero cad nuevas direcciones de memoria, pero ese cambio de dirección no se ve fuera de la función.

Para que pudieses hacerlo así tendrías que pasarle un doble puntero:

Código C:
Ver original
  1. void inicializarCadenas(char **cad)
  2. {
  3.      char c;
  4.      int j=0;
  5.      
  6.      *cad = (char*)malloc(sizeof(char));
  7.      
  8.      while((c = getchar()) != '\n')
  9.      {
  10.         (*cad)[j] = c;
  11.         j++;
  12.         *cad = (char*)realloc(*cad, (j+1) * sizeof(char));
  13.      }
  14.        
  15.      (*cad)[j] = '\0';
  16. }
  17.  
  18. int main()
  19. {
  20.     char *cadena1, *cadena2;
  21.     int n,i;
  22.    
  23.     inicializarCadenas(&cadena1);
  24.     puts(cadena1);
  25.    
  26.    
  27.    
  28.     system("pause");
  29.     return 0;
  30. }