In f_create() when it asks wether the user wants to enter a new record or not... wether you enter Y or N it just continues adding new records, can someone tell me whats wrong?
Code:
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
char id[5];
char first_name[20];
char surname[20];
int mem_type[5];
int expiry[5];
} DATABASE;
int f_menu ();
void f_create();
void f_append();
void f_display();
DATABASE f_add();
void main()
{
int menu = 0;
menu = f_menu ();
do
{
switch (menu)
{
case 1 :
f_create ();
break;
case 2 :
f_display ();
break;
case 3 :
printf("Exiting Program\n\n");
break;
}
} while (menu != 3);
}
int f_menu ()
{
int menu = 0;
printf("\n\nLeisure Center Menu\n");
printf(" 1. Add Members\n 2. Display Members\n 3. Exit\n ");
printf("\nEnter choice: ");
do
{
scanf("%d", &menu);
fflush(stdin);
if((menu < 1 ) || (menu > menu))
{
printf("Invalid choice. Try again: ");
}
} while ((menu < 1 ) || (menu > menu));
return (menu);
}
void f_create()
{
FILE *fp;
DATABASE members;
char reply;
/* Open file to write to it */
if ((fp = fopen ( "members", "wb" )) == NULL )
{
printf ( "Cannot open file\n" );
return;
}
/* Loop while there are more students */
do
{
/* Enter student details */
members = f_add ();
fwrite ( &members, sizeof(DATABASE ), 1, fp );
/* Choose another student or not */
do
{
printf ( "Another record? > " );
scanf ( "%c", &reply );
fflush ( stdin );
reply = toupper( reply );
}
while (( reply != 'Y' ) && ( reply != 'N' ));
} /* End of loop for more students */
while (( reply == 'Y' ));
fclose (fp);
}
DATABASE f_add ()
{
DATABASE members;
printf("Enter member ID : ");
gets(members.id);
printf("Enter first name : ");
gets(members.first_name);
printf("Enter surname : ");
gets(members.surname);
printf("Enter membership type : ");
scanf(members.mem_type);
fflush(stdin);
printf("Enter memership expiry month (1-12) : ");
scanf(members.expiry);
fflush(stdin);
/* Return structure containing student details */
return members;
}
void f_display ()
{
FILE *fp;
DATABASE members;
/* Open file to read from it */
if ((fp = fopen ( "members", "rb" )) == NULL )
{
printf ( "Cannot open file\n" );
return;
}
/* Read first record */
fread ( &members, sizeof( DATABASE ), 1, fp );
/* Loop while there are records in the file */
while (!(feof (fp)))
{
/* Display previous record */
printf ( "%s %3d\n", members.id, members.first_name, members.surname, members.mem_type, members.expiry);
/* Read next record */
fread ( &members, sizeof( DATABASE ), 1, fp );
}
fclose (fp);
}
void append()
{
}