Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

what is the error in this coding can some one fix it for me please #include <std

ID: 3775455 • Letter: W

Question

 what is  the error in this coding can some one fix it for me please  #include <stdio.h> #include <conio.h> #include "valid.c"struct purch_detail {   char item_desc[20];   int unit_price;   int qty; };    void display();   void entryData();   void readFile();   void getName(char *str);   void getWriteFileName(char *);   void getReadFileName(char *);   void getzeroInteger(char *_chr, int *_value);    int count=0;   int total_price=0;   int total_amt=0;   char option;   char filename [14];   FILE *fp;   struct purch_detail *pd_ptr, *tmptr;    void main()   {       clrscr();       pd_ptr = (struct purch_detail *) malloc(sizeof(struct purch_detail) * 10);       tmptr = pd_ptr;      printf(" Do you want to create the data file type 'y' for yes and 'n' for no.");     scanf("%c", &option);     fflush(NULL);        if( option == 'y' || option == 'Y')       {    printf(" You can generate bill of maximum 10 item. ");        getWriteFileName(filename);        display();       }       elseif( option == 'n' || option == 'N')        {   getReadFileName(filename);        readFile();        }         getch();   }    void entryData()   {      while(1)      {       printf(" Enter item name : ");       getName(tmptr->item_desc);        getPosInteger("Enter unit price of the item : ", &tmptr->unit_price);       getzeroInteger("Enter no of qty purchased : ", &tmptr->qty);        if(tmptr->qty == 0)         break;        count ++;       if (count >= 10)          break;      /* if ( count % 2 == 0)        if ( (pd_ptr = (struct purch_detail *) realloc(pd_ptr, sizeof(struct purch_detail) * 2)) == NULL)        {  printf("Realloc failed. No enough memory available.");           break;        }        */        tmptr++;      }   }    void display()   {      tmptr = pd_ptr;       fprintf(fp," Item                 Unit Price Quantity  Total Price ");      fprintf(fp," ______________________________________________________");       printf(" Item                 Unit Price Quantity  Total Price ");      printf(" ______________________________________________________");      while(1)      {     total_price = tmptr->unit_price * tmptr->qty ;     fprintf(fp, " %-20s      %4d    %4d     %5d", tmptr->item_desc, tmptr->unit_price, tmptr->qty, total_price);     printf(" %-20s      %4d    %4d     %5d", tmptr->item_desc, tmptr->unit_price, tmptr->qty, total_price);     //printf("");     total_amt += total_price;      count--;        if ( count <= 0)         break;       tmptr++;      }       fprintf(fp, " ______________________________________________________");      fprintf(fp, " 			    Total Amount : %5d", total_amt);      printf(" ______________________________________________________");      printf(" 			    Total Amount : %5d", total_amt);   }     void getWriteFileName(char *fname)    {      printf("Enter Output File name maxium 14 character : ");      scanf("%s", fname);       if( ( fp = fopen(fname, "wt") ) == NULL  )      {  fclose(fp);     printf(" Invalid file name entered.");      }      else     entryData();   }     void getReadFileName(char *fname)    {      printf("Enter Input File name maxium 14 character : ");      scanf("%s", fname);       if( ( fp = fopen(fname, "r+t") ) == NULL  )      {  fclose(fp);     printf(" Invalid file name entered.");      }    }     void readFile()    {      char chr;      while( feof(fp) == 0)      {      chr = getc(fp);      printf("%c",chr);      }    }     void getName(char *str)     {     int count1=0;     char *getstr;     char readch='';     int errorflag = 0;         fflush(NULL);        getstr = str;         while(1)        {         scanf("%c", &readch);         if( readch == ' ')            break;          *getstr = readch;          count1++;         getstr++;         if( count1 >= 20 )           break;        }        fflush(NULL);         if(errorflag)           getName(str);         *getstr='';     }   void getzeroInteger(char *_chr, int *_value)  {    float tempval =1;    int _ival=0;      printf(" %s", _chr);     _scaint = scanf("%f", &tempval);     fflush(NULL);      if ( _scaint != 0 )    {      _ival = tempval;       if ( tempval < 0 )      {       printf("%s", " You should enter value greater then or equal to zero. Enter the value again...");       getzeroInteger(_chr, _value);      }       elseif ( _ival != tempval)      {       printf("%s", " Error(decimal value). It will be truncated the digit after the percision. Enter integer number only.");       getzeroInteger(_chr, _value);      }      elseif( ! ( (tempval >= -32768 ) && (tempval <= 32767 )  ) )      {       printf("%s", " Error out of range entry. You should enter integer value in the range of -32768 to 327678 only.");       getzeroInteger(_chr, _value);      }      else      {       *_value = (int) tempval;      }    }   else      {     printf(" %s","Error in entry. Enter integers only.");     getzeroInteger(_chr, _value);      }  } 

Explanation / Answer

#include <stdio.h>
#include <conio.h>
#include "valid.c"

struct purch_detail
{
char item_desc[20];
int unit_price;
int qty;
};

void display();
void entryData();
void readFile();
void getName(char *str);
void getWriteFileName(char *);
void getReadFileName(char *);
void getzeroInteger(char *_chr, int *_value);

int count=0;
int total_price=0;
int total_amt=0;
char option;
char filename [14];
FILE *fp;
struct purch_detail *pd_ptr, *tmptr;

void main()
{
clrscr();
pd_ptr = (struct purch_detail *) malloc(sizeof(struct purch_detail) * 10);
tmptr = pd_ptr;

printf(" Do you want to create the data file type 'y' for yes and 'n' for no.");
scanf("%c", &option);
fflush(NULL);

if( option == 'y' || option == 'Y')
{
printf(" You can generate bill of maximum 10 item. ");
getWriteFileName(filename);
display();
}
else if( option == 'n' || option == 'N')
{
getReadFileName(filename);
readFile();
}


getch();
}

void entryData()
{
while(1)
{
printf(" Enter item name : ");
getName(tmptr->item_desc);

getPosInteger("Enter unit price of the item : ", &tmptr->unit_price);
getzeroInteger("Enter no of qty purchased : ", &tmptr->qty);

if(tmptr->qty == 0)
break;

count ++;
if (count >= 10)
break;
/* if ( count % 2 == 0)
if ( (pd_ptr = (struct purch_detail *) realloc(pd_ptr, sizeof(struct purch_detail) * 2)) == NULL)
{ printf("Realloc failed. No enough memory available.");
break;
}
*/

tmptr++;
}
}

void display()
{
tmptr = pd_ptr;

fprintf(fp," Item Unit Price Quantity Total Price ");
fprintf(fp," ______________________________________________________");

printf(" Item Unit Price Quantity Total Price ");
printf(" ______________________________________________________");
while(1)
{
total_price = tmptr->unit_price * tmptr->qty ;
fprintf(fp, " %-20s %4d %4d %5d", tmptr->item_desc, tmptr->unit_price, tmptr->qty, total_price);
printf(" %-20s %4d %4d %5d", tmptr->item_desc, tmptr->unit_price, tmptr->qty, total_price);
//printf("");
total_amt += total_price;

count--;
if ( count <= 0)
break;
tmptr++;
}

fprintf(fp, " ______________________________________________________");
fprintf(fp, " Total Amount : %5d", total_amt);
printf(" ______________________________________________________");
printf(" Total Amount : %5d", total_amt);
}

void getWriteFileName(char *fname)
{
printf("Enter Output File name maxium 14 character : ");
scanf("%s", fname);

if( ( fp = fopen(fname, "wt") ) == NULL )
{
fclose(fp);
printf(" Invalid file name entered.");
}
else
entryData();
}

void getReadFileName(char *fname)
{
printf("Enter Input File name maxium 14 character : ");
scanf("%s", fname);

if( ( fp = fopen(fname, "r+t") ) == NULL )
{
fclose(fp);
printf(" Invalid file name entered.");
}
}

void readFile()
{
char chr;
while( feof(fp) == 0)
{
chr = getc(fp);
printf("%c",chr);
}
}
void getName(char *str)
{
int count1=0;
char *getstr;
char readch='';
int errorflag = 0;

fflush(NULL);
getstr = str;

while(1)
{
scanf("%c", &readch);
if( readch == ' ')
break;

*getstr = readch;

count1++;
getstr++;
if( count1 >= 20 )
break;
}
fflush(NULL);

if(errorflag)
getName(str);

*getstr='';
}

void getzeroInteger(char *_chr, int *_value)
{
float tempval =1;
int _ival=0;

printf(" %s", _chr);
_scaint = scanf("%f", &tempval);
fflush(NULL);


if ( _scaint != 0 )
{
_ival = tempval;

if ( tempval < 0 )
{
printf("%s", " You should enter value greater then or equal to zero. Enter the value again...");
getzeroInteger(_chr, _value);
}

else if ( _ival != tempval)
{
printf("%s", " Error(decimal value). It will be truncated the digit after the percision. Enter integer number only.");
getzeroInteger(_chr, _value);
}
else if( ! ( (tempval >= -32768 ) && (tempval <= 32767 ) ) )
{
printf("%s", " Error out of range entry. You should enter integer value in the range of -32768 to 327678 only.");
getzeroInteger(_chr, _value);
}
else
{
*_value = (int) tempval;
}

}
else
{
printf(" %s","Error in entry. Enter integers only.");
getzeroInteger(_chr, _value);
}
}

Note: some of things are fixed, but valid.c file is not available