badCode.cpp: In function ‘int convert_grades(float (*)[0], char*, float)’:
badCode.cpp:37: warning: format ‘%c’ expects type ‘int’, but argument 2 has type ‘char*’
badCode.cpp: In function ‘int main()’:
badCode.cpp:71: error: cannot convert ‘float (*)[20]’ to ‘float (*)[0]’ for argument ‘1’ to ‘int convert_grades(float (*)[0], char*, float)’
So, the warning at line 37; %c indicates an integer type. You probably mean %s, which indicates a char*.
line 71; the function grades accepts something of type ‘float (*)[0]’. You are trying to pass it something of type ‘float (*)[20]’. You can make this much easier on yourself by switching to C++ and using a container class such as std::vector. That's not a great answer, I know, but when I start seeing things like float(*)[20] hanging around, I simplify it all before I shoot myself in the foot.