[C con Clase] Pasar datos de un archivo a un vector

Pablo Brunet cirujatuc79 en gmail.com
Vie Mar 20 03:31:37 CET 2009


sigo con problemas :(, ahora no me muestra nada, solo presione una tecla
para continuar..., el archivo posee 2 registros en este orden:
TUCUMAN    JUAN    31
SALTA       PABLO    29

# 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=0;
p v[100];

int main()
{
 m=fopen("pablo.txt","rb");
 fseek(m,0,0);
 fread(&v,sizeof(v),1,m);
 i=1;
 while (!feof(m)){
       cout<<endl<<"  "<<v[i].provincia<<"  "<<v[i].nombre<<"
 "<<v[i].edad<<endl;
       fread(&v[i],sizeof(v[1]),1,m);
       i++;}
 fclose(m);

 system("PAUSE");
}


El 19 de marzo de 2009 22:30, Pablo Brunet <cirujatuc79 en gmail.com> escribió:

> wow!! que simple!!! la verdad es que yo solo, me complico mas de la cuenta,
> ahora si!!! anda perfecto!
> otra vez muchísimas gracias!! no sabes cuanto me ayudaste, ahora entro de
> lleno en el tema listas y espero llegar para el examen del lunes!, si
> apruebo te lo voy a deber gran parte a vos jaja, nuevamente gracias por
> su predisposición. Que gran ayuda son estas listas de distribución!!.
>
> El 19 de marzo de 2009 22:10, Steven Davidson <srd4121 en njit.edu> escribió:
>
> 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
>>
>>
>> _______________________________________________
>> 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
>>
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20090319/7aa4fea8/attachment.html>


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