Code:
void reduce_fraction(Fraction *R)
{
int cmnDenom;
Fraction *reduce;
// reduce = (Fraction*) malloc(sizeof(reduce)); // you want allocate space for a Fraction not for a pointer to a fraction
reduce = (Fraction*)malloc(sizeof(Fraction));
if(reduce != NULL)
{
printf( "R->numer: %d\nR->denom: %d\n\n", R->numer,R->denom);
cmnDenom = gcd(R->numer,R->denom);
reduce->numer = R->numer/cmnDenom;
reduce->denom = R->denom/cmnDenom;
*R = *reduce;
}
free(reduce);
}
I don't see a reason why you would want to dynamically allocate the Fraction
Code:
void reduce_fraction(Fraction *R)
{
int cmnDenom;
Fraction reduce;
printf( "R->numer: %d\nR->denom: %d\n\n", R->numer,R->denom);
cmnDenom = gcd(R->numer,R->denom);
reduce.numer = R->numer/cmnDenom;
reduce.denom = R->denom/cmnDenom;
*R = reduce;
}