Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: uhuru en 21 Mayo 2010, 22:32 pm



Título: Leer archivos // Leer un dato en concreto
Publicado por: uhuru en 21 Mayo 2010, 22:32 pm
Hola. Tengo un archivo de texto con datos de diferentes personas, por ejemplo:

Código:
nombre: juan
apellido: garcia
edad: 40
ciudad: malaga

Ahora con un programa quiero mostrar por pantalla aquellas personas del archivo que sean mayores de 18 años.
He visto que con fseek puedes moverte dentro del archivo. He pensado en crear dos punteros al archivo, uno quedándose al principio de cada bloque (cada persona), y otro que lo vaya recorriendo. Entonces el que va recorriendo, si encuentra la edad y ve que es mayor de 18 va hasta el final del bloque y un for, muestra por pantalla desde el primer puntero en el inicio hasta el ultimo en el final.

No se si esa es la mejor forma de encararlo, si a alguien se le ocurre alguna mejor acepto sugerencias. Gracias.


Título: Re: Leer archivos // Leer un dato en concreto
Publicado por: [Zero] en 22 Mayo 2010, 01:34 am
Podrías crear una estructura para cada persona y una función que lea los datos y los rellene en la estructura, así quedaría el código más legible  :P. Una vez lo tienes todo en estructuras es fácil comprobar valores.

Saludos


Título: Re: Leer archivos // Leer un dato en concreto
Publicado por: nicolasblues86 en 22 Mayo 2010, 01:35 am
hola
si el archivo lo creas como binario cosa que recomiendo  podes hacerlo con un solo puntero a FILE me explico...


supongamos que el archivo ya esta creado y nosotros queremos imprimir todo su contenido con las funciones fread  y fseek se podria hacer..


Código
  1.  
  2.     while (!feof(puntero_file))
  3. {
  4. fread(&variable_tipo_struct, sizeof(tipo_struct), 1, puntero_file)
  5. printf ("%s",variable_tipo_struct.nombre);
  6. printf ("%d",variable_tipo_struct.numero);
  7. //etc...
  8. }
  9.  
  10.  


donde el primer parametro de fread es la varialbe de tipo struct el seungo parametro es el tamaño de nuestro struct, el tercer elemento parametro es la cantidad, y el cuerto es el puntero a file
y si queres escribir en el fichero es = solo que antes llenas el struct con datos y despues usas la funcion fwrite de la misma menera que usas fread
solo que fwrite en vez de copiar los datos del archivo al struct copialos datos del struct al archivo


 Saludos





Título: Re: Leer archivos // Leer un dato en concreto
Publicado por: uhuru en 22 Mayo 2010, 14:14 pm
hola
si el archivo lo creas como binario cosa que recomiendo  podes hacerlo con un solo puntero a FILE me explico...


La verdad es que no acabo de ver  una forma de hacerlo con archivos de texto. Seguramente me miraré un poco como trabajar con binarios y lo haré así, porque según me dijeron es más cómodo.