Hi guys...having problems with a project...its supposed to add names and email addresses but when i go to add a third it falls over....
Its driving me mental..lol
Any ideas appreciatedCode:#include<stdio.h> #include <stdlib.h> #include <string.h> #define MAX 30 struct custdata * initcd(struct custdata *cdata); struct node * init(struct node *head); int menu (void); struct custdata * getdetails(struct custdata *,struct node *); struct node * add (struct node*,struct custdata *); struct node * display (struct node *head); struct node * sort (struct node *head); struct node * del (struct node *head); struct custdata { char cname[30]; int numoforders; }; struct node { struct node *next; struct custdata *cdata; }arrofpoints[MAX]; int i; main() { int choice; struct node *head; struct custdata *cdata; i = 0; head = init(head); cdata = initcd(cdata); do { choice = menu(); switch(choice) { case 1 : cdata = getdetails(cdata,head); head = add(head,cdata); break; case 2 : head = del(head); break; case 3 : head = display(head); break; case 4 : head = sort(head); break; case 5 : break; } }while(choice !=5); } struct node * init(struct node *head) { head = NULL; return head; } struct custdata * initcd(struct custdata *cdata) { cdata = NULL; return cdata; } struct custdata * getdetails(struct custdata *cdata,struct node *head) { cdata = malloc(100); printf("Enter Customer Name to add to record \n"); scanf("%s",cdata->cname); fflush ( stdin ); printf("Enter Number of Orders required to add to record \n"); scanf("%d",&cdata->numoforders); fflush ( stdin ); return cdata; } int menu (void) { int choice; printf("Enter number 1 to add to queue \n"); printf("Enter number 2 to delete from queue \n"); printf("Enter number 3 to display contents \n"); printf("Enter number 4 to sort contents \n"); printf("Enter number 5 to exit program \n"); scanf("%d",&choice); return choice; } struct node * add (struct node *head,struct custdata *cdata) { //iterate to last record arrpoints int z; z = 0; if(head == NULL) { head=malloc(30); head->cdata = cdata; head->next = NULL; arrofpoints[z].cdata = cdata; z++; return head; }else { head->next=add(head->next , cdata); } } struct node * display (struct node *head) { int j; for(j=0; j<=MAX; j++) { if(arrofpoints[j].cdata !=NULL) { printf(" Customer Name is : %s \n",arrofpoints[j].cdata->cname); printf(" Num of Orders is : %d \n",arrofpoints[j].cdata->numoforders); } else { printf("End of Information ! \n"); return head; } } } struct node * sort (struct node *head) { int z; int i; int x; int value; char tempcname[20]; char tempemail[30]; int tempnumoforders; for ( z=0; z<MAX; z++) /*initial for which controls the number of passes and the initial numbering*/ { value=0; for (x=z+1; x<MAX; x++) /*this for loop is always one ahead from the previous for thus controlling numbers to be sorted*/ { //< if(arrofpoints[x].cdata != NULL) { if (strcmp(arrofpoints[z].cdata->cname,arrofpoints[x].cdata->cname)>0) { printf("in if \n"); strcpy(tempcname,arrofpoints[z].cdata->cname); tempnumoforders = arrofpoints[z].cdata->numoforders; value=1; while (value==1) { strcpy(arrofpoints[z].cdata->cname,arrofpoints[x].cdata->cname); arrofpoints[z].cdata->numoforders=arrofpoints[x].cdata->numoforders; strcpy(arrofpoints[x].cdata->cname,tempcname); arrofpoints[x].cdata->numoforders = tempnumoforders; value=0; } } } } } } struct node * del (struct node *head) { char tcname[20]; int i; int j; int x; int index; int flag; int flag2; flag = 0; flag2 = 0; j = 0; index = 0; printf("Enter the Name of the Person you wish to remove from the list \n"); scanf("%s",tcname); printf("Checking ..... \n"); for(x = 0; x<=MAX; x++) { if(flag == 0) { if(arrofpoints[x].cdata != NULL) { printf("is not null \n"); if(strcmp(arrofpoints[x].cdata->cname,tcname)==0) { printf("deleting user %s from the system!!\n",tcname); arrofpoints[x].cdata = NULL; flag =1; index = x; }else { printf("There is no user with the name %s \n",tcname); return head; } } } } if(flag == 1) { for(j = index; j <MAX; j++) { if(flag2 == 0) { if(arrofpoints[j+1].cdata!=NULL) { printf("in sort \n"); arrofpoints[j].cdata = arrofpoints[j+1].cdata; } else { printf("in sort \n"); printf("All elements re-arranged \n"); arrofpoints[j].cdata = NULL; flag2 =1; } } } } }



LinkBack URL
About LinkBacks



