[C con Clase] Pasar datos de un archivo a un vector
Steven Davidson
srd4121 en njit.edu
Vie Mar 20 02:10:59 CET 2009
Hola Pablo,
Pablo Brunet wrote:
> Hola a todos de nuevo!
>
> bueno sigo abordando el tema de las estructuras de datos en C y estoy
> en una encrucijada, trato de resolver un ejercicio en el cual me
> piden que lea desde un archivo que contiene algunos registros DE
> PERSONAS y cuyos campos son localidad, nombre y edad. diseñe el
> siguiente algoritmo pero me quede en la parte de llenar el vector con
> los datos del archivo.... yo había ideado esto:
>
Veamos el código fuente.
> # include <stdio.h>
> # include <stdlib.h>
> # include <iostream>
>
> using namespace std;
>
>
> typedef struct p {
> char nombre[20];
> int edad;
> char provincia[30];};
>
> FILE * m;
> int i;
> p v[100];
>
> int main()
> {
> m=fopen("pablo.txt","rb");
> fseek(m,0,0);
> fread(&v,sizeof(v),1,m);
Después de esta sentencia, segúrate de asignar 'i'. Como ya hemos leído
el primer registro, empezaremos el bucle con el segundo. Esto es,
i = 1;
> while (!feof(m)){
> v[i]=v.nombre; // ACA ME QUEDE Y NO SE COMO HACERLO... :(
Aparte de ser incorrecto, esto no es necesario. La función 'fread()' ya
ha leído y guardado la información en 'v'.
> ..............
> fread(&v,sizeof(v),1,m);
El problema realmente tiene que ver con los parámetros que pasas a
'fread()'. Deberías pasar la dirección de la memoria del elemento donde
quieres guardar el siguiente registro. Esto sería,
fread( v+i, ... );
o si lo prefieres,
fread( &v[i], ... );
> I++ }
> system("PAUSE");
Recuerda que debes cerrar el fichero antes de terminar el programa.
> }
>
Espero que esto te aclare las dudas.
Steven
Más información sobre la lista de distribución Cconclase