The program is working except for few problems:


1. If I initialize the cust_name with space it will not display apt_id for other items when I run the program next time but if I initialize it with any character it will be ok.

2. When I add a cust_name with more than 4 character it will add to it some strange characters.


3. How can I pause to let the user see some data when he select an option.

4. When I enter an option not in the menu the menu is then displayed more then once.

Any other hints that let me improve my program is appreciated.

Thank you.


Code:
/*A simple program that maintain apartment reservation
 and it use struct and array and it save data in a text file  */

#include <stdio.h>

/* num_lines is the number of screen display lines */
#define num_lines	25

struct appts
{
      int apt_id;
      char vacant;
      char floor;
      char *cust_name;
      int no_of_days;
};

struct appts apt[20];


/* Function prototypes */

void CLS(void);
void DISP_DATA(void);
void GET_DATA(void);
void SAVE_DATA(void);
void LIST_VACNT(void);
void RESERV_APT(void);
void DEL_RESRV(void);
void MENU(void);

/*****************************************************************************/

void CLS()
{
	int n;

	for(n = 0; n < num_lines; n++)
		puts("");

}

/*****************************************************************************/
void GET_DATA()
{
    FILE *fp;
    int i;

	CLS();

    fp=fopen("txtfile.txt","r");

    if (fp == NULL)

         for (i=0;i<20;i++)
         {
             apt[i].apt_id = i + 100;
             apt[i].vacant = 'n';
             apt[i].floor= '1';
             apt[i].cust_name=' ';
             apt[i].no_of_days=0;
         }

    else
    {
          for (i=0;i<20;i++)
          {
              fscanf(fp,"%d\n",&apt[i].apt_id);
              fscanf(fp,"%c\n",&apt[i].vacant);
              fscanf(fp,"%c\n",&apt[i].floor);
              fscanf(fp,"%s\n",&apt[i].cust_name);
              fscanf(fp,"%d\n",&apt[i].no_of_days);
          }

          fclose(fp);
     }

}
/*****************************************************************************/
void DISP_DATA()
{
	/* Displays data */
 
 int i;
 char text[5];


	    CLS();

        for (i=0;i<20;i++)
        {
       printf("\n-------------------------------------------------------\n");
       printf("%d",apt[i].apt_id);
       printf("%c",apt[i].vacant);
       printf("%c",apt[i].floor);
       printf("%s",&apt[i].cust_name);
       printf("%d",apt[i].no_of_days);

        }
}
/*****************************************************************************/
void LIST_VACNT()
{
    int i;

    CLS();


    for(i=0;i<20;i++)
    {
        if (apt[i].vacant == 'n')
            printf("\nvacant ===> %d",apt[i].apt_id);
    }

}
/*****************************************************************************/
void RESERV_APT()
{
    int x,y;


    CLS();

    printf("\nEnter aparment no");

    scanf("%d",&y);

    x=y-100;

    if (apt[x].vacant=='n')
    {
        apt[x].vacant='y';

        printf("\nEnter name");
        scanf("%s",&apt[x].cust_name);

        apt[x].no_of_days = 5;
     }
     else
         printf("this apartment is reserved!!!!!!!");

}
/*****************************************************************************/
void DEL_RESRV()
{

  int i,x,y;
  char name[20];

    CLS();

    printf("\nEnter apt no");

    scanf("%d",&y);

    x=y-100;

    if (apt[x].vacant=='y')
    {
        apt[x].vacant='n';

        apt[x].cust_name= ' ';

        apt[x].no_of_days= 0;
    }
     else
         printf("this apt is not reserved!!!!!!!");



}
/*****************************************************************************/
void MENU()
{
    char option;
	char text[10];

 do
	{
		CLS();


        if (option == 'a')

           DISP_DATA();

        else if (option == 'b')
                 LIST_VACNT();

             else if (option == 'c')
                      RESERV_APT();

                  else if (option == 'd')
                           DEL_RESRV();
                       else
                       {
                            printf("\n\t\t\tSelect Option");
	                        printf("\n\n\t\t\t a) List all apartments");
                		    printf("\n\n\t\t\t b) List vacant apartments");
	                	    printf("\n\n\t\t\t c) Reserve apartment");
                            printf("\n\n\t\t\t d) Delete apartment reservation");
                            printf("\n\n\t\t\t x) Exit");
	                 	    printf("\n");
                       }

		scanf("%c",&option);
 

	}
	while(option != 'x');
}
/*****************************************************************************/
void SAVE_DATA()
{

   FILE *fp;

   int i;

   fp= fopen("txtfile.txt","w");

   for (i=0;i<20;i++)
   {
       fprintf(fp,"%d\n",apt[i].apt_id);
       fprintf(fp,"%c\n",apt[i].vacant);
       fprintf(fp,"%c\n",apt[i].floor);
       fprintf(fp,"%s\n",&apt[i].cust_name);
       fprintf(fp,"%d\n",apt[i].no_of_days);
   }


    fclose(fp);
}
/*****************************************************************************/
void main()
{
	CLS();
    GET_DATA();
	MENU();
    SAVE_DATA();
}