I wish I could but this is for an assignment so I'm required to use pointers.
So? Then why not a pointer to a structure?

Now look at this function:
Code:
void addRecs(int *count, char **fname, char **lname, float *grades)
{
...
First question where in that function (or in main()) are you trying to retrieve an array of grades for each student?

Second question in main() you defined fname as an array of C-strings (**fname) and you called the function like:
Code:
addRecs(count, fname, lname, grades);
So do you realize that you can't change where *fname points? You need to pass the address of *fname to the function if you want to change where the pointers are pointing.

Also why are you "adding" students in both your function and in main().

Next you shouldn't be casting the return value of malloc(), that cast can hide problems.

Lastly for now, when posting code please use code tags and post your text as plain text.