Udlaes medlem fra struct vha pointer.
Først får i lige mit program.#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void indtastmedlem();
void udskrivmedlem();
struct medlemmer
{
int medlemsnr;
char navn[60];
char gadenavn[60];
char postnr[60];
char by[60];
char tlfnr[60];
char mobil[60];
char email[60];
};
void writeStruct(struct medlemmer *pMedlem)
{
FILE *file;
file = fopen("c:\\testfil.txt", "a");
fwrite(pMedlem, sizeof(struct medlemmer), 1, file);
fclose(file);
}
/*
struct medlemmer* readStruct()
{
struct Test *temp = (struct Test*)malloc(sizeof(struct Test));
FILE *file;
file = fopen("data/struct.txt", "r");
fread(temp, sizeof(struct Test), 1, file);
fclose(file);
return temp;
}
*/
void printStruct(struct medlemmer *pMedlem)
{
printf("struct:\n");
printf("\tNavn: %s\n", pMedlem->navn);
printf("\tMedlemsnummer: %d\n", pMedlem->medlemsnr);
}
void main()
{
int valg;
do {
printf("Hvad vil du:\n\n");
printf("[1] Indtast medlem\n[2] Udkskriv medlem\n[3] Afslut program\n");
scanf("%d", &valg);
switch (valg)
{
case 1:
indtastmedlem();
break;
case 2:
udskrivmedlem();
break;
case 3:
exit(0);
break;
default:
printf("Du tastede forkert, vaelg enten [1], [2], [3] eller [4]\n");
break;
}
}
while(valg != 1 && valg != 2);
}
void indtastmedlem()
{
FILE *fp;
int n = 0;
struct medlemmer *pMedlem = (struct medlemmer*)malloc(sizeof(struct medlemmer));
if( (fp=fopen("c:\\testfil.txt", "r"))==NULL)
printf("Kan ikke aabne filen.\n");
else
{
while( fread(&*pMedlem, sizeof(pMedlem[n]), 1, fp) ==1 )
{
//printf("Navn: %s", pMedlem ->navn);
n++;
}
}
do
{
struct medlemmer *pMedlem = (struct medlemmer*)malloc(sizeof(struct medlemmer));
printf("Det nuvaerende antal medlemmer er: %d\n", n);
pMedlem->medlemsnr = ++n;
printf("Indtast navn: ");
fflush(stdin); //Sørger for at den ikke skriver "Indtast navn" og "Indtast gadenavn..." oven i hinanden.
gets(pMedlem -> navn);
printf("Indtast gadenavn og husnummer: ");
//fflush(stdin);
gets(pMedlem -> gadenavn);
printf("Indtast postnummer: ");
//fflush(stdin);
gets(pMedlem -> postnr);
printf("Indtast by: ");
//fflush(stdin);
gets(pMedlem -> by);
printf("Indtast telefonnummer: ");
//fflush(stdin);
gets(pMedlem -> tlfnr);
printf("Indtast mobilnummer: ");
//fflush(stdin);
gets(pMedlem -> mobil);
printf("Indtast email: ");
//fflush(stdin);
gets(pMedlem -> email);
printStruct(pMedlem);
writeStruct(pMedlem);
free(pMedlem);
printf("Vil du skrive flere medlemmer ind? Tast blot 'j' IKKE efterfulgt af Enter.\n");
}
while(getch() == 'j');
//pMedlem = readStruct();
//printStruct(pMedlem);
return;
}
/**alt herunder virker ikke endnu**/
void udskrivmedlem()
{
FILE *filepointer;
int n = 0;
struct medlemmer *pMedlem = (struct medlemmer*)malloc(sizeof(struct medlemmer));
printf("Udskriv medlemsnummeret paa det medlem du oensker at udskrive: %d\n", n);
scanf("%d", &n);
pMedlem->medlemsnr = n;
if( (filepointer=fopen("c:\\testfil.txt", "r"))==NULL)
printf("Kan ikke aabne filen.\n");
else
{
while( fread(&*pMedlem, sizeof(pMedlem[n]), 1, filepointer) ==1 );
}
printf("Navn: %s", pMedlem[n].navn);
}
Blot se bort fra alt slamkoden :D
Er der nogen der kan fortælle mig, hvad jeg skal gøre for at få skrevet f.eks. Medlem nr 2 ud?
Det eneste jeg kan få skrevet ud fra filen, er det nyeste indtastede medlem.