Ver Mensaje Individual
  #6 (permalink)  
Antiguo 11/09/2006, 17:48
Nivel7
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años, 9 meses
Puntos: 2
claro, lo entiendo, y a eso me refiero yo tambien:

lo que tu haces es esto:

declaras un array de caractereres que funcione como un receptor de la cadena de entrada, para que despues recerves memoria exactamente del tamaño, de la cadena leida.

lo malo de esto es que el array receptor tienen que ser de un tamaño relativamente grande, ya que tienen que aceptar cualquier posibilidad en la entrada.

es por eso que Instru te sugirio un tamaño, de 256.

despues ya recervas memoria para las cadenas miembro.

lo que te propuse es evitar esos dos pasos, y lasinar la cadena leida directamente a las cadenas miembro, y ademas la memoria ocupada seria exactamente del tamaño de numero de caracters contenidos.

ejemplo:
//usando la funcion descrita en el mensaje anterior.

en lugar de hacer:

char marc[255];
char mod[255];
scanf("%s\n", marc);
scanf("%s\n", cad);
Auto->marca = (char*)malloc(strlen(marc)+1);
Auto->modelo= (char*)malloc(strlen(mod)+1);
strcpy(Auto->marca, marc);
strcpy(Auto->modelo, mod);

solo harias:

LeerCad(Auto->marca);
LeerCad(Auto->modelo);

con forme se lean caracteres de la entrada las cadenas se iran dimencionando.

ya solo te quedara liberar la memoria.

Bueno, solo es una sugerencia, aqui estamos.
Saludos.