Hvorfor skriver den 2 linjer ud?
Jeg skriver lige hele min kode ind, jeg ved ikke om det hjælper jer med noget. Ved godt min programmering nok ikke er verdens bedste, men man skal jo starte et sted :D---------------------------------------------------------
#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);
}
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 )
{
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: ");
gets(pMedlem -> navn);
printf("Indtast gadenavn og husnummer: ");
gets(pMedlem -> gadenavn);
printf("Indtast postnummer: ");
gets(pMedlem -> postnr);
printf("Indtast by: ");
gets(pMedlem -> by);
printf("Indtast telefonnummer: ");
gets(pMedlem -> tlfnr);
printf("Indtast mobilnummer: ");
gets(pMedlem -> mobil);
printf("Indtast email: ");
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');
return 0;
}
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);
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->navn);
}
---------------------------------------------------------
Mit problem er så det, at når jeg kommer til dette sted i mit program:
printf("Indtast navn: ");
gets(pMedlem -> navn);
printf("Indtast gadenavn og husnummer: ");
Så skriver den "Indtast navn: Indtast gadenavn og husnummer:"
altså den skriver de to linjer lige efter hinanden. Det der så gør at jeg bliver endnu mere forvirret er at den gør det rigtig nok hvis jeg vælger at køre programmet igennem lige efter igen.
mvh
Robert.
PS. Jeg ved godt at menupunkt to ikke virker endnu, men det problem skal jeg nok kigge på senere :D