/* * Program demonstrating use of struct. */ #include #include /* struct representing a fraction */ struct fraction { int numerator; int denominator; }; /* function declarations -- comments below with definitions */ void init_fraction(struct fraction * f, int numerator, int denominator); int print_fraction(FILE * outfile, struct fraction * f); /* main program */ int main(void) { struct fraction f1; int numerator; int denominator; printf("enter numerator and denominator:\n"); if (scanf("%d %d", &numerator, &denominator) != 2) { fprintf(stderr, "values must be numeric\n"); return EXIT_FAILURE; } init_fraction(&f1, numerator, denominator); fprintf(stdout, "the fraction is "); print_fraction(stdout, &f1); fprintf(stdout, "\n"); return EXIT_SUCCESS; } /* * initialize instance of "fraction" structure. */ void init_fraction(struct fraction * f, int numerator, int denominator) { /* another syntax (*f).numerator = numerator; (*f).denominator = denominator; */ f->numerator = numerator; f->denominator = denominator; } /* * "print" instance of "fraction" structure (write in n / d to outfile), * using fprintf. * * returns return value from fprintf (which is usually ignored, but * return for consistency, or just in case caller wants it). */ int print_fraction(FILE * outfile, struct fraction * f) { return fprintf(outfile, "%d/%d", f->numerator, f->denominator); }