#include <stdio.h> #include <stdlib.h> #include <string.h> double calcAverage(int grades[], int numGrades); void getGrades(char fName[], int grades[], int *numGrades); int main(int argc, char *argv[]) { int const MAX_GRADES = 100; int grades[MAX_GRADES]; int numGrades = 0; int const PASSING_SCORE = 70; getGrades(argv[1], grades, &numGrades); printf("numgrades is %d\n", numGrades); for (int i = 0; i < numGrades; i++) { printf("%d - %d ", i, grades[i]); //this is what is going on here if (grades[i] >= PASSING_SCORE) printf("passing!\n"); else printf("failing :-(\n"); } double average = calcAverage(grades, numGrades); printf("The average is %f\n", average); printf("Hello, World! again...\n"); return 0; } void getGrades(char fName[], int grades[], int *numGrades) { FILE *fptr; fptr = fopen(fName, "r"); //r is for read if (fptr == NULL) { printf("you screwed up!\n"); exit(-1); } else { printf("success!\n"); } char buf[BUFSIZ]; while (fgets(buf, sizeof(buf),fptr)) { char *s = (char *) malloc(strlen(buf)); strcpy(s,buf); printf("hey! %s", s); int grade; grade = atoi(buf); printf("grades... %d numgrades...%d\n", grade, *numGrades); grades[*numGrades] = grade; (*numGrades)++; } } double calcAverage(int grades[], int numGrades) { int total = 0; for (int i = 0; i < numGrades; i++) total = total + grades[i]; printf("the total is %d\n", total); double average = total / (double)numGrades; return average; }