[C con Clase] Problema con memoria dinamica en c

Programante programante en gmail.com
Dom Oct 7 12:47:44 CEST 2007


german tuppo escribió:
> Hola! que tal!!!
> Estoy haciendo un parser (programa que lee campos separados por algun 
> caracter separador desde un txt) para la facu. Me piden que use 
> abstraccion, por lo tanto debo dividir el proyecto en 3 archivos, 
> parse.h , parser.c y main.c
> Mi problema esta en el main.
>
> Les cuento:
> en el main tengo que llamar a esta funcion (que esta definida en 
> parser.h):  int parserCampo(TDA_Parser tda, int n, char* valor);
> que lo que hace es tomar el campo numero n que ya fue almacenado en la 
> estructura (TDA_Parser) y debuelbe un puntero al valor del campo.
> El tema es que desde el main yo hago:
>                                                         char *campo
>                                                         
> parserCampo(parser, campNro, &campo);
campo es un char*. Por lo tanto &campo es un char**, pero en el 
prototipo valor es un char*
Existen dos formas de hacerlo. Que valor sea un char* y copies en él el 
contenido del campo, en cuyo caso camp no sería char* sino char 
campo[MAXIMA_LONGITUD_CAMPO], o que hagas a campo apuntar a la memoria 
dinámica de TDA_Parser, en cuyo caso valor sería un char** y tendrías 
que hacer *valor = donde_está_el_campo_N
>                                                         printf("\nEl 
> campo numero %d es: %s\n\n ", campNro, campo);
>
> y me imprime un simbolito raro.
> internamente parserCampo usa memoria dinamica y anda bien. Y la verdad 
> probé montones de cosas pero no puedo hacer que ande bien. No se en 
> que me estoy equivocando.
> Agradezco cualquier ayuda que me puedan brindar.
>
> Ah, estoy usando el dev-c++ y windows XP. Y el programa me lo piden en 
> ANSI c.
>
> Muchas gracias por anticipado.
> saludos
>
> german
>  




Más información sobre la lista de distribución Cconclase