J
janssenssimon
//de structure om de highscores in op de slagen
typedef struct score{
char *naam;
int veld;
int score;
struct score *volg;
}HIGH;
void toonhighscores(void)
{
int i=6;
FILE* f;
HIGH* h;
f=fopen("high.bin","rb");
clrscr();
//als er al highscores zijn,...
if(f)
{
printf("HIGHSCORES\n----------\n\nNaam");
gotoxy(30,4);
printf("Veld");
gotoxy(38,4);
printf("Score\n\n");
h=malloc(sizeof(HIGH));
fread(h, sizeof(HIGH), 1, f);
while(!feof(f))
{
printf("%s", h->naam);
gotoxy(30,i);
printf("%.2d", h->veld);
gotoxy(38,i++);
printf("%.2d\n", h->score);
fread(h, sizeof(HIGH), 1, f);
}
free(h);
fclose(f);
}
//als er nog geen highscores zijn,...
else
printf("Nog geen highscores aanwezig in het spel\n");
printf("\nDruk op een toets om terug te keren naar het menu.");
getch();
}
//schrijft de gespeelde highscores van dit spel weg
void schrijfweg_highscores(char *naam, int size, int zetten)
{
int geschreven=0;
FILE *f;
HIGH *h, *kop=NULL, *staart=NULL, *n;
f=fopen("high.bin", "rb");
if(f)
{
h=malloc(sizeof(HIGH));
fread(h, sizeof(HIGH), 1, f);
while(!feof(f))
{
//alles in lezen in een structure
//die later terug wordt geschreven in een nieuw bestand
h->volg=NULL;
if(kop)
staart->volg=h;
else
kop=h;
staart=h;
h=malloc(sizeof(HIGH));
fread(h, sizeof(HIGH), 1, f);
}
fclose(f);
f=fopen("high.bin","wb");
for(h=kop; h; h=h->volg)
{
if(!(strcmp(h->naam,naam)) && h->veld==size && h->score>zetten)
{
//als de nieuwe data vorige data moet overschrijven
h->score=zetten;
geschreven=1;
}
fwrite(h, sizeof(HIGH), 1, f);
}
//als de nieuwe data nog niet in het bestand zit
if(!geschreven)
{
n=malloc(sizeof(HIGH));
n->naam=naam;
n->veld=size;
n->score=zetten;
n->volg=NULL;
fwrite(n, sizeof(HIGH), 1, f);
free(n);
}
}
else
{
//als er nog niets in het bestand staat, moeten de scores van het
gespeelde spel erin komen
h=malloc(sizeof(HIGH));
h->naam=naam;
h->veld=size;
h->score=zetten;
h->volg=NULL;
f=fopen("high.bin", "wb");
fwrite(h, sizeof(HIGH), 1, f);
}
//bestand afsluiten
fclose(f);
//geheugen vrijmaken
if(kop)
for(h=kop; h
{
h=kop->volg;
free(kop);
kop=h;
}
else
free(h);
}
This is my code, but the problem is that when you close and open the
entire programme it can't printf any of the highscores, or write them
away for that matter. Non of the 2 functions are completely finished.
Why does this happen and what can I do about it??
Dit is mijn code, maar het probleem is dat hij de highscores de eerste
maal dat het programma gerunt wordt allemaal tegoei wegschrijft ed.
Maar als je het programma afsluiten en terug opent kan hij geen van de
2 functies nog tegoei afsluiten. Er worden geen waarden meer geprint.
Hoe komt dit en wat kan ik er aan doen?
typedef struct score{
char *naam;
int veld;
int score;
struct score *volg;
}HIGH;
void toonhighscores(void)
{
int i=6;
FILE* f;
HIGH* h;
f=fopen("high.bin","rb");
clrscr();
//als er al highscores zijn,...
if(f)
{
printf("HIGHSCORES\n----------\n\nNaam");
gotoxy(30,4);
printf("Veld");
gotoxy(38,4);
printf("Score\n\n");
h=malloc(sizeof(HIGH));
fread(h, sizeof(HIGH), 1, f);
while(!feof(f))
{
printf("%s", h->naam);
gotoxy(30,i);
printf("%.2d", h->veld);
gotoxy(38,i++);
printf("%.2d\n", h->score);
fread(h, sizeof(HIGH), 1, f);
}
free(h);
fclose(f);
}
//als er nog geen highscores zijn,...
else
printf("Nog geen highscores aanwezig in het spel\n");
printf("\nDruk op een toets om terug te keren naar het menu.");
getch();
}
//schrijft de gespeelde highscores van dit spel weg
void schrijfweg_highscores(char *naam, int size, int zetten)
{
int geschreven=0;
FILE *f;
HIGH *h, *kop=NULL, *staart=NULL, *n;
f=fopen("high.bin", "rb");
if(f)
{
h=malloc(sizeof(HIGH));
fread(h, sizeof(HIGH), 1, f);
while(!feof(f))
{
//alles in lezen in een structure
//die later terug wordt geschreven in een nieuw bestand
h->volg=NULL;
if(kop)
staart->volg=h;
else
kop=h;
staart=h;
h=malloc(sizeof(HIGH));
fread(h, sizeof(HIGH), 1, f);
}
fclose(f);
f=fopen("high.bin","wb");
for(h=kop; h; h=h->volg)
{
if(!(strcmp(h->naam,naam)) && h->veld==size && h->score>zetten)
{
//als de nieuwe data vorige data moet overschrijven
h->score=zetten;
geschreven=1;
}
fwrite(h, sizeof(HIGH), 1, f);
}
//als de nieuwe data nog niet in het bestand zit
if(!geschreven)
{
n=malloc(sizeof(HIGH));
n->naam=naam;
n->veld=size;
n->score=zetten;
n->volg=NULL;
fwrite(n, sizeof(HIGH), 1, f);
free(n);
}
}
else
{
//als er nog niets in het bestand staat, moeten de scores van het
gespeelde spel erin komen
h=malloc(sizeof(HIGH));
h->naam=naam;
h->veld=size;
h->score=zetten;
h->volg=NULL;
f=fopen("high.bin", "wb");
fwrite(h, sizeof(HIGH), 1, f);
}
//bestand afsluiten
fclose(f);
//geheugen vrijmaken
if(kop)
for(h=kop; h
{
h=kop->volg;
free(kop);
kop=h;
}
else
free(h);
}
This is my code, but the problem is that when you close and open the
entire programme it can't printf any of the highscores, or write them
away for that matter. Non of the 2 functions are completely finished.
Why does this happen and what can I do about it??
Dit is mijn code, maar het probleem is dat hij de highscores de eerste
maal dat het programma gerunt wordt allemaal tegoei wegschrijft ed.
Maar als je het programma afsluiten en terug opent kan hij geen van de
2 functies nog tegoei afsluiten. Er worden geen waarden meer geprint.
Hoe komt dit en wat kan ik er aan doen?