I just want to create a simple code of a moving ball colldiing to each other. I am able to print the results, however, my fprintf isn't working :(. I am quite new to this, so please help? Thank you in advance.

After running it just says "EASY.exe has stopped working..."

My compiler didnt show where the error either.

Code:`#include <stdio.h>`

#include <math.h>

#include <conio.h>

typedef double real;

typedef struct

{

real xpos;

real ypos;

real zpos;

real uvel;

real vvel;

real wvel;

real omegax;

real omegay;

real omegaz;

real radius;

real mass;

} sphere;

void update_position(sphere *ball, real dt)

{

//(*ball).xpos

ball->xpos=ball->xpos + dt*ball->vvel;

//ypos,zpos

}

void detect_ball(sphere *ball1, sphere *ball2, real *pdist)

{

*pdist=sqrt((ball2->xpos-ball1->xpos)*(ball2->xpos-ball1->xpos)+

(ball2->ypos-ball1->ypos)*(ball2->ypos-ball1->ypos));

// if ( dist<= (ball1->radius + ball2->radius) +0.0075 )

// {

// if ( dist>= ball1->radius + ball2->radius -0.0075 )

// {

// *ptime=0;

// }

// }

}

int main(int argc, char *argv)

{

real dt=0.01;

real t, dist1, tmax=1, mlimit, firstvvel, gap=1.5, dist[2], ballmatxpos[101][2];

int nballs=1 ;

int i,j,m,k;

sphere *ball;

ball=(sphere *)malloc(nballs*sizeof(sphere));

mlimit=tmax/dt;

//initialise positions

for(i=0;i<=nballs;i++)

{

ball[i].radius=0.5;

ball[i].xpos=(real) i * (2*ball[i].radius + gap);

ball[i].ypos=0.0;

ball[i].uvel=1.0;

ball[0].vvel=1.0;

ball[1].vvel=0.0;

}

//pendulum to be released

// ball[0].xpos=0;

//ball[0].ypos=0;

// firstvvel=0;

//timestep loop

t=0.0;

dist1=0.0;

while(t<tmax)

{

for(m=0;m<=mlimit;m++)

{

//update position

for(i=0;i<=nballs;i++)

{

update_position(&(ball[i]), dt);

}

//collision detection

for(i=0;i<=nballs;i++)

{

for(j=0;j<=nballs;j++)

{

detect_ball(&(ball[i]),&(ball[j]), &dist1);

if ( dist1 <= (ball[i].radius + ball[j].radius) +0.075 )

{

if ( dist1 >= (ball[i].radius + ball[j].radius) -0.075 )

{

// ball2->uvel=ball1->vvel;

//yes collision, modify velocities and rotation rates

t=0;

}

}

}

}

ballmatxpos[m][0]=t;

ballmatxpos[m][1]=ball[0].xpos;

printf("In this case, initial velocity= %3.4lf with t=%3.4lf \n", ballmatxpos[m][0], t );

t+=dt;

}

}

// ---------------//-------------------------

FILE *pFile1;

FILE *pFile2;

pFile1 = fopen("graphing3.txt", "w");

pFile2 = fopen("graphing4.txt", "w");

if (pFile1 != NULL)

{

for(m=0;m<=mlimit;m++)

{

fprintf( pFile1, " %3.4lf \n ", ballmatxpos[m][0]);

}

fprintf( pFile1,"\n");

fclose(pFile1);

}

if (pFile2 != NULL)

{

for(m=0;m<=mlimit;m++)

{

fprintf( pFile2, " %3.4lf \n", ballmatxpos[m][1]);

}

fprintf( pFile2,"\n");

fclose(pFile2);

}

else

{

printf("inda dapat print bro");

}

// -----------------------------------------------------

getch();

return 0;

}