[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