Avatar billede krismort Nybegynder
16. april 2002 - 11:31 Der er 4 kommentarer og
1 løsning

dynamisk array og fil ?

Hej
Jeg har sådan et dynamisk array her:

typedef struct sInfo
{
    char  Name[32];
    int  Alder;
    float Helbred;
    bool  Trigger;
    long  CPR;
}sInfo;

sInfo* Personer
int    IdxCtr;

Er der en som kan hjælpe mig med at gemme / hente det fra til en fil ?

Kristian



Avatar billede chries Nybegynder
16. april 2002 - 11:47 #1
Her er et forslag, går ud fra at IdxCtr er antal personer i arrayed

#include "iostream.h"
#include "string.h"
#include "stdio.h"
#include "fstream.h"

typedef struct sInfo
{
    char  Name[32];
    int  Alder;
    float Helbred;
    bool  Trigger;
    long  CPR;
} sInfo;

int main(int argc, char* argv[])
{
    {    // skriv scope
        fstream file;

        file.open( "fil.bin", ios::out|ios::binary );

        if( !file )
        {
            cout << "could not open file" << endl;
            return 1;
        }

        int    IdxCtr = 12;
        sInfo* Personer = new sInfo[IdxCtr];

        for( int i=0; i<IdxCtr; i++ ) // dummy info
        {
            Personer[i].Name[0] = '\0';       
            Personer[i].Alder = i;       
            Personer[i].Helbred = (float)i;       
            Personer[i].Trigger = true;       
            Personer[i].CPR = i;       
        }

        file.write( (char*)&IdxCtr, sizeof(int) ); // no elements in file
        file.write( (char*)Personer, sizeof(sInfo)*IdxCtr ); // info
        file.close();
    }

    {    // læs scope
        fstream file;

        file.open( "fil.bin", ios::in|ios::binary );

        if( !file )
        {
            cout << "could not open file" << endl;
            return 1;
        }

        int    IdxCtr = 0;
        file.read( (char*)&IdxCtr, sizeof(int) ); // no elements in file

        sInfo* Personer = new sInfo[IdxCtr];
        file.read( (char*)Personer, sizeof(sInfo)*IdxCtr ); // info

        for( int i=0; i<IdxCtr; i++ ) // dummy info
        {
            // alder trigger ikke ændred mellem de diverse personer, der udskrives ikke
            cout << "alder:  " << Personer[i].Alder << endl;       
            cout << "helbred: " << Personer[i].Helbred << endl;       
            cout << "cpr:    " << Personer[i].CPR << endl;       
            cout << endl;
        }

        file.close();
    }

    return 0;
}
Avatar billede chries Nybegynder
16. april 2002 - 11:48 #2
"personer" skal selvfølgelig delete's engang :-)
Avatar billede kamikaze Nybegynder
16. april 2002 - 14:09 #3
Hmmm. Du skriver at dy har et dynamisk array, men der er ikke noget array i din postede kode. Hvordan opbevarer du dine data? I en liste/vector?
Avatar billede kamikaze Nybegynder
16. april 2002 - 14:10 #4
Hvad er IdxCtr? Antallet af personer?
Avatar billede krismort Nybegynder
17. april 2002 - 11:05 #5
kamikaze: Personer er en pointer til mit array... og IdxCtr er antallet af indicer i mit array så hvis IdxCtr er 99 så er det 100 personer i mit array

chries: Takker det var lige det jeg ledte efter. Mit entlige problem var entligt at finde
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester