[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