PDA

View Full Version : [C] - salvare vettore e lista in un file binario


Mr NiKo Hyde
13-07-2012, 17:37
ciao, mi servirebbe sapere come salvare queste 2 strutture su file binari

il file preferibilmente deve essere unico, ma va bene anche salvarle su 2 file diversi

al momento sono bloccato sul salvataggio del vettore

avendo questo vettore
int vettore[270];

e salvandolo cosi
fwrite(vettore,sizeof(int),270,fpNUM);

al momento del caricamento alcuni numeri vengono persi:muro:

AnonimoVeneziano
13-07-2012, 19:30
ciao, mi servirebbe sapere come salvare queste 2 strutture su file binari

il file preferibilmente deve essere unico, ma va bene anche salvarle su 2 file diversi

al momento sono bloccato sul salvataggio del vettore

avendo questo vettore
int vettore[270];

e salvandolo cosi
fwrite(vettore,sizeof(int),270,fpNUM);

al momento del caricamento alcuni numeri vengono persi:muro:

Posta tutto il codice

Mr NiKo Hyde
13-07-2012, 21:22
il codice è troppo lungo :S si tratta di un giochino in c
cmq sono riuscito a salvare il vettore nel file binario, ora tocca alla lista :S

salvare questa lista in un file binario

typedef struct player{
int ID;
int fiches;
int cartelle;
struct player* next;
char nome[DIM_NOME];
int dado;
int cartelleP;
}player;

consigli? :muro:

Mr NiKo Hyde
14-07-2012, 06:09
#include <stdio.h>
#include <stdlib.h>

typedef struct player{
int ID;
int fiches;
int cartelle;
struct player* next;
char nome[12];
int dado;
int cartelleP;
}player;

void crea (player*);
void salva(player*);
void carica(player*);

int main(int argc, char *argv[])
{
player*giocatore;

crea(giocatore);
salva(giocatore);
system("PAUSE");
return 0;
}



void crea(player*giocatore)
{
int i;
player*punt;
/**CREO PLAYER ONE**/
giocatore=(struct player*)malloc(sizeof(struct player));
giocatore->ID=1;
printf("\n\n\t\tInserisci il nome del player %d: ", giocatore->ID);

scanf("%s",giocatore->nome);
giocatore->fiches=100;
giocatore->cartelle=0;
/**CREO ALTRI PLAYERS**/
punt=giocatore;

for(i=1; i<2; i++)
{
punt->next=(struct player*)malloc(sizeof(struct player));
punt=punt->next;
punt->ID=i+1;
printf("\n\t\tInserisci il nome del player %d: ", punt->ID);
scanf("%s",punt->nome);
punt->fiches=100;
punt->cartelle=0;
punt->next=NULL;
}
}

void salva(player*giocatore)
{
FILE*fpPlay;
player*punt;
fpPlay=fopen("01-play.dat","wb");
punt=giocatore;
int i;
for (i=0;i<2;i++)
{

if(fwrite(&punt,sizeof(player),1,fpPlay)!=1)
{
printf("errore");
return;
}
//system("pause");
punt=punt->next;
}

}
void carica(player*giocatore)
{
FILE*fpPlay;
fpPlay=fopen("01-play.dat","rb");
player*prec;
player*punt;
int j;
//player*giocatore;

giocatore=(struct player*)malloc(sizeof(player));

fread(giocatore,sizeof(player),1,fpPlay);
punt=giocatore;
for(j=1;j<2;j++)
{
punt->next=(struct player*)malloc(sizeof(player));
punt=punt->next;
fread(punt,sizeof(player),1,fpPlay);
punt->next=NULL;
}

fclose(fpPlay);
}

Mr NiKo Hyde
14-07-2012, 16:50
mhmm no, avevo provato questa modifica ma nn andava lo stesso

ho riscritto tutto e ho salvato i campi uno alla volta, e cosi funziona