I'm doing this program but I'm having a lot of problems on it. I need some help please.

My program should open an exiting file, called cal_result.txt, for appending data to it.

2) It define the following four macros to perform addition, subtraction, multiplication, and division
* ADD(n1, n2)
* SUB(n1, n2)
* MUL(n1, n2)
* DIV(n1, n2)



2) You must modify the point structure as shown in the Example 16-1:

struct point struct cal3field

{ {

int x; ?????

int y; ?????

????

} a; } CalResult;

to create a new structure which contains three fields for holding n1, n2, and the result, all of the float type. A structure variable called CalResult should be the created and should hold the actual values of n1, n2, and result, when the calculation of switch-case is finished.



4) My program now should open the pre-created file cal_result.txt for appending data to it. I have to use the FORMAT that is a macro that contains something similar to the following statement as shown below for writing data to the disk, each piece of data is separated by a blank space, and n1, n2, and result should be replaced by structure members.

fprint(fprt, “%f %f %f ”, n1, n2, result);


Now invoking the the DOS command prompt, I use the some testing data like for example:
C:\ mycal 10 + 20

C:\mycal 10 – 20

C:\mycal 10 x 20

C:\mycal 10 / 20

and now I should get this results

10.000000 20.000000 30.000000 10.000000 20.0000000 -10.0000000 10.000000 20.000000 200.000000 0.500000.



Here is what I have so far:


Code:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

// MACROS
#define ADD(n7,n8) ((n7)+(n8))
#define SUB(n1,n2) ((n1)-(n2))
#define MUL(n1,n2) ((n1)*(n2))
#define DIV(n1,n2) ((n1)/(n2))
//MACRO FORMAT for saving
#define FORMAT fprint(fPtr"%f%f%f",CalResult.n1,CalResult.n2,CalResult.result)  



// declare struct CalResult
 struct cal3field 
{
	  double n1;
	  double n2;
	  double result;
}	  CalResult;




void main(int argc, char *argv[])

{
	FILE *fPtr;     /* fPtr = cal_result.txt file pointer */

    char op[2] = " "; 
	double result  = 0, n1 = 0, n2 = 0;

	
 strcpy(op,argv[2]);  

		

//open the file
   /* opens the file. Exit program if was unable to create file  */
   if ( ( fPtr = fopen( "cal_result.txt", "a" ) ) == NULL ) {
		printf( "File could not be opened\n" );
   } 
		else { 
      
      //printf( "Enter EOF to end input.\n" );

	  /* get operator */
      n1 = atof(argv[1]); 

	  /* get first argument */
      n2 = atof(argv[3]); 
	
	  /* get second argument */
	  switch(op[0])
		{
			case '+': 
				result = ADD(n1,n2);
				//PRINT;
			break;

			case '-': 
				result = SUB(n1,n2);
				//PRINT; 
			break;

			case '*':

			case 'x':

			case 'X': 
				result = MUL(n1,n2);
				//PRINT;
			break;

			case '/':
			//case '\\': 
				if(n2 != 0.0) result = DIV(n1,n2);
					//PRINT; 
			break;
			
			default: puts("Wrong operator entered");
		}// end case

	// Structure variable CalResult holds values of n1, n2, and result
	CalResult.n1 = n1; 
	CalResult.n2 = n2; 
	CalResult.result = result;
     
	fprintf( fPtr, "%f %f %f\n", (CalResult.n1),(CalResult.n2),(CalResult.result)
);
	 /* write n1, n2 and result into file with fprintf */
      
         //fprintf( fPtr, "%f %f %f\n", n1, n2, result ); // write data
	//fprintf(fPtr, FORMAT); // write data
		 
      //} /* end while */

      fclose( fPtr ); /* fclose closes file */
} /* end else */
   


//Read the file 

	  /* fopen opens file; exits program if file cannot be opened  */
   if ( ( fPtr = fopen( "cal_result.txt", "r" ) ) == NULL ) {
		printf( "File could not be opened\n" );
   } // end if 
   else { // read n1, n2 and result from file *
			printf("Reading file\n");
			printf( "%-10s%-13s%s\n", "n1", "n2", "result" );
			//fscanf( fPtr, "%lf%lf%lf", &CalResult.n1, &CalResult.n2 &CalResult.result);
			//printf( "%f  %f  %f\n   ", CalResult.n1  , CalResult.n2,  CalResult.result);
			// while not end of file 
			//while ( !feof( fPtr ) ) { 
				printf( "%-10f%-13f%7.2f\n", n1, n2, result );
				fscanf( fPtr, " %lf %lf %lf", &CalResult.n1, &CalResult.n2
,&CalResult.result );
			//} // end while 

		fclose( fPtr ); // fclose closes the file 
   } // end else

   

} /* end main */