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

Pablo Brunet cirujatuc79 en gmail.com
Vie Mar 20 06:54:13 CET 2009


no amigo, el archivo que estoy abriendo fue generado con este algoritmo y si
es un binario:
# include <stdio.h>
# include <stdlib.h>
# include <iostream>
# include <string.h>

using namespace std;

typedef struct persona{
        char nombre[20];
        int edad;
        char provincia[30];};


persona p;
FILE * m;
int n,i=0;
int main()

{

    m=fopen("pablo.txt","w+b");
    cout<<"ingrese la cantidad de registros que desea cargar: ";
    cin>>n;
    while (i<n){
    fseek(m,0,2);
    cout<<"Provincia: ";
    cin>>p.provincia;
    cout<<"Nombre: ";
    cin>>p.nombre ;
    cout<<"Edad: ";
    cin>>p.edad;
    fwrite(&p,sizeof(p),1,m);
    i++;}
   fseek(m,0,0);

fread( &p, sizeof(p), 1, m );
while (!feof(m)){
   cout << endl << p.nombre << "   " << p.edad <<"   "<<p.provincia<< endl;
   fread( &p, sizeof(p), 1, m );}
    fclose(m);
    system("PAUSE");
    return 0;
}


El 20 de marzo de 2009 2:24, Steven Davidson <srd4121 en njit.edu> escribió:

> Hola Pablo,
>
> Pablo Brunet wrote:
>
>> tampoco me cierra por que aca no me muestra nada si es totalmente
>> logico lo que estoy poniendo:
>>
>>  i=0;
>>  while (!feof(m)){
>>       fread(&v[i],sizeof(v[i]),1,m);
>>       cout<<v[i].nombre;
>>       i++;  }
>>
>> tendría que mostrar los nombres en ese caso. o no?
>>
>>
> Todo depende del formato u organización de la información contenida en el
> fichero. Según el código fuente que nos diste previamente, estás abriendo un
> fichero en modo texto (simple). Esto significa que la información se basa en
> caracteres. Por lo tanto, para leer y guardar la información debes procesar
> los caracteres y posiblemente convertirlos a otro tipo como 'int'. Para
> esto, no puedes leer la información directamente como lo has hecho con
> 'fread()', sino que debes leer caracteres y comprobar su representación.
> Esto último se puede lograr con 'fscanf()', si el formato no es muy
> complejo. Por ejemplo,
>
> FILE *fichero;
> int num;
> char cad[10];
>
> fscanf( fichero, "%s %d", cad, &num );
>
>
> Espero haber aclarado el asunto.
>
>
> 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/20090320/83fe10e4/attachment.html>


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