Ver Mensaje Individual
  #2 (permalink)  
Antiguo 30/07/2010, 20:30
Avatar de gvite666
gvite666
 
Fecha de Ingreso: abril-2010
Mensajes: 65
Antigüedad: 14 años, 1 mes
Puntos: 4
Respuesta: Leer listas desde archivo

pues mira lo primero que tienes que hacer es darle un determinado numero de digitos a tus cosas,por ejemplo hasta cuantos nodos podras almacenar si quieres almacenar 100 tendras que darle tres digitos y aunque solo tengas 2 nodos en tu archivo debera estar asi 002, el numero de char que quieras almacenar, 004 si quieres almacenar un maximo de 999 chars, tambien darle una determinada longitud a tus chars con un relleno A*** si quieres un convinacion de cuatro letras, y espero que me explique para los flotantes.

con todo esto ya es suficiente para trabajar en lo que quieres.
has de cuenta que tienes asi tu archivo
002
004
A*** B*** C *** D***
012.2 014.8 27.11 04.11
012.2 014.8 27.11 04.11
004
A*** B*** C*** D***
012.2 014.8 27.11 04.11
012.2 014.8 27.11 04.11
con la funcion fseek puedes pocicionarte en donde tu quieras solo tienes que saber como usarla.
por ejempo si le pones fseek(Archivo,4,SEEK_SET); te va a pocicionar justo antes de 004 que son los tres digitos de 002 y el salto de linea (claro te lo digo en caso de que no sepas de esta funcion).
Asi no importa si tienes 100 o mas (depende de lo que le pongas en la longitud de tus datos) siempre sera la misma.

asi podras acceder a calquier nodo.
¿como? asi:
si quieres acceder al segundo tado solo tienes que saber la longitud del primero en este caso solo el cuatro y con el cuatro sabemos cual es la longitud asi
Código C:
Ver original
  1. fseek(archivo,4,SEEK_SET);//primero me posiciono en la cantidad
  2. fscanf("%i",&Camtidad);//leo la cantidad
  3. Long=Cantidad*LongChar+Cantidad*LongFloat*2;
  4. /*para mi ejemplo estos son los valores de : longChar=5 LongFloat=4 uno mas de lo que se ve por los espacios y el salto de linea*/
  5. //con esto tienes la longitud del primer nodo y asi ya puedes saltartelo e ir al siguiente nodo
  6. fseek(Archivo,Long,SEEK_CUR);//lo saltamos y leemos la longitud
  7. //con esto puedes poner un for para leer lo datos que quieras
  8. fscanf("%i",&Camtidad);
  9. for(i=0;i<Cantidad;i++)
  10. {
  11. fscanf("%s",strDato);
  12. fseek(Archivo,1,SEEK_CUR);//vueno aqui haces lo que quieras con el primer dato.
  13. }
Bueno esta es solo la idea tu sabras que es lo que quieres hacer, recuerda que un programa por mas largo que sea si esta bien estructurado, cuando se acabe simplemente sera maravilloso.