[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