[C con Clase] vector de string en c sin saber tamaño.

Agustin agscontini en gmail.com
Sab Abr 4 23:10:34 CEST 2009


Que tal. 
 El tema es el siguiente...tengo que levantar de un archivo de texto(previamente levantado para lectura) comentarios auto que empiezan con /** y terminan en */, a un vector en el cual guardar una linea del comentario auto por posición. Lo que más me esta complicando es el tema de reservar memoria para cada string y para el vector en si(que después tengo que liberar). El vector lo cargo en memoria para trabajarlo. 
Esto es lo que tengo pensado (seguramente tenga varios errores), desde ya les agradezco su ayuda ya que realmente la necesito.

void levantar_auto(FILE * archivo_origen)
char * linea;            /*para cargar una linea del archivo origen*/
char * temp;             /* para cargar temporalmente parte de una linea*/
int num_linea = 0;       /*para saber el número de linea que levanto*/
int i,j=0;                 /*contadores para linea temp,lineas escritas en vec*/
char ** array            /* ¿array de string a cargar?? */

While(! feof(archivo_origen)) /*voy a leer todo el archivo y levantar de */
{                              /*a un auto y tratarlo como necesite*/
   getstring(archivo_origen, linea); /*me levanta un renglon en linea*/
   num_linea++                       /*leí una linea asi que contador aumenta*/
   If (strstr(linea,"/**")!= NULL)   /*si encuentra el inicio de AUTO...*/
   Do 
    {
      getstring(archivo_origen,linea); /*leo la siguiente linea y la levanto*/
      num_linea++;                      /*aumento el contador*/
      if (strstr(linea,"*/")==NULL)    /* sino esta cerrado en esta linea*/
        {                        
          debería reservar memoria en la pos[] del vector de strings para el tamaño de esta linea, y luego guardarlo en la pos[] del vector. Luego liberar la memoria supongo.
          j++;                        /*levante una linea en vector*/
        }
     } While (strstr(linea,"*/") != NULL); /*si se cierra no lo levanto..*/
     For(i=0,linea(i)=="*/"; i++)  /*escribo el renglon hasta que cierra comen*/
          temp[i]= linea[i];       /*cargo hasta llegar al corte"*/" */
     array+j = temp;               /*lo escribo en la sig pos del vecotor*/
     Aca mando el vector auto cargado para que otro lo trabaje con una función y pueda buscar cosas que nos sirvan (errores y demás). Sino me equivoco ahí mismo me liberan la memoria pedida y usada por mi vector y los strings de adentro...sino lo tengo uqe hacer yo para volver a usarla para el próximo vector auto.
}
fclose (archivo_origen);           /*lo termine de usar asi que lo cierro*/

Me vendría bárbaro la ayuda y lo antes posible. Muchísimas gracias de antemano.
Saludos   
            
  


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