[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Pregunta técnica sobre C



¿Cómo copiarias una estructura con esto campos?

struct hostent {
  char *h_name;                 Official name of host.
  char **h_aliases;             Alias list.
  int h_addrtype;               Host address type.
  int h_length;                 Length of address.
  char **h_addr_list;           List of addresses from name server.
}

¿así?

// Reserva de memoria para la estructura 
  ia->h = new hostent;
  
  // Copiamos el nombre
  ia->h->h_name = new char[strlen(tmp->h_name)+1];
  strcpy(ia->h->h_name, tmp->h_name);
  
  // Copiamos la lista de alias
  ptr = tmp->h_aliases;
  ia->h->h_aliases = new char*[16];
  while (*tmp->h_aliases) {
    *ia->h->h_aliases = new char[strlen(*tmp->h_aliases)+1];
    strcpy(*ia->h->h_aliases++, *tmp->h_aliases++);
  }
  // Copiamos el tipo de dirección
  ia->h->h_addrtype = tmp->h_addrtype;
  
  // Copiamos el tamaño de la dirección
  ia->h->h_length = tmp->h_length;
  
  // Copiamos la lista de direcciones
  ia->h->h_addr_list = new char*[1];
  ia->h->h_addr_list[0] = new char[strlen(tmp->h_addr_list[0])+1];
  strcpy(ia->h->h_addr_list[0], tmp->h_addr_list[0]);

¿No habría una forma más fácil?

-- 
-----------------------------------------------------------------------------

 * Recursivo: Adj, vease recursivo.

-------------
                      Registered Linux user number 134.596

 E-mail: monkiki@teleline.es                     Powered by Debian 2.1 slink
-----------------------------------------------------------------------------


Reply to: