hi,
i have the code below, and i am unable to get it to run. on compilation i get no errors, but when i try to run the program i only get the first field of the list (the membersID request) please help, i cant seem to find the problem.
Code:
#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
const int length = 50;
const int type = 10;
struct _members
{
int mem_id;
char mem_status [type];
char name [length];
char surname [length];
char flatNo [length];
char Street [length];
char pst_cde [type];
char Phone [length];
_members *next;
};
_members *new_rec, *head, *curr;
int mainmenu ( _members *new_rec, _members *curr, _members *head);//prototype
void PrintEntries ( _members *curr, _members *head);
void AddEntry ( _members *new_rec, _members *curr, _members *head);
void AddEntry ( _members *new_rec, _members *curr, _members *head)
{
curr = head;
while (curr -> next != NULL)
{
curr -> next;
}
new_rec = (_members*)malloc(sizeof(struct _members));
curr -> next = new_rec;
new_rec -> next = NULL;
printf ("\nEnter Member ID : "); scanf ("%d", new_rec -> mem_id);
printf ("\nEnter Member status : "); scanf ("%s", new_rec -> mem_status);
printf ("\nEnter Name : "); scanf ("%s", new_rec -> name);
printf ("\nEnter Surname : "); scanf ("%s", new_rec -> surname);
printf ("\nEnter flat/house Number : "); scanf ("%s", new_rec -> flatNo);
printf ("\nEnter Street Name : "); scanf ("%s", new_rec -> Street);
printf ("\nEnter Post Code : "); scanf ("%s", new_rec -> pst_cde);
printf ("\nEnter Contact Number : "); scanf ("%s", new_rec -> Phone);
mainmenu(new_rec, curr, head);
}
void PrintEntries(_members *curr, _members *head )
{
curr = head;
while (curr != NULL)
{
printf ("Membership ID: %d\n ", curr -> mem_id);
printf ("\nStatus : %s\n", curr -> mem_status);
printf ("\nName : %s %s\n", curr -> name, curr -> surname);
printf ("\nAddress : %s\n%s\n", curr -> flatNo, curr -> Street);
printf ("\nPost Code : %s\n ", curr -> pst_cde);
printf ("\nTelephone : %s\n", curr -> Phone);
}
curr = curr -> next;
mainmenu(new_rec, curr, head);
}
int mainmenu( _members *new_rec, _members *curr, _members *head)
{
int reply = 0;
puts("MAIN MENU\n");
puts(" 1.Add an Entry.");
puts(" 2.Print All Entries.");
puts(" 3.Quit.");
printf("\n\nChoose one: "); scanf ("%d", & reply);
while (reply != 3)
{
switch (reply)
{
case 1:
AddEntry(new_rec, curr, head);
break;
case 2:
PrintEntries(curr, head);
break;
case 3:
return 0;
default:
puts("INCORRECT ENTRY. PLEASE TRY AGAIN\n\n");
}
}
return 1;
}
int main(void)
{
_members *new_rec, *curr,*head;
head = NULL;
new_rec = NULL;
curr = NULL;
new_rec = (_members*)malloc(sizeof(struct _members));
new_rec -> next = head;
head = new_rec;
mainmenu(new_rec, curr,head);
return 0;
}