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

David fire ddfire en gmail.com
Dom Abr 5 01:51:46 CEST 2009


hola
y si haces algo asi:
1-buscas el primer /**
2-guardas la pocicion
3-contas cuantos caracteres hay hasta el */
4-reservas memoria
5-volves a la pocicion guardada
6-levantas todos los caracteres
7-metes lo levantado en una lista simple.
8-buscas el siguiente /**  vas al paso 2, si no hay terminaste de cargarlos.

como no sabes el tamaño del archivo ni el tamaño de los comentarios te
convendria mas trabajarlos de a uno a la vez, cargar solo de a uno en
memoriapero eso podes dejarlo para otro momento.
David



El 4 de abril de 2009 18:10, Agustin <agscontini en gmail.com> escribió:

> 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
>
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>



-- 
(\__/)
(='.'=)This is Bunny. Copy and paste bunny into your
(")_(")signature to help him gain world domination.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20090404/b7065543/attachment.html>


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