In various examples found on the web fgetc() is used like this:
FILE *fp = fopen(PATH, \"r\");
if (fp == NULL) {
perror(\"main\");
exit
Looping until fgetc returns EOF is perfectly fine. Afterwards, if you want to know whether the loop ended due to simply reaching the end of the file or due to an error, you should call ferror or feof. If you don't care you can skip the call.
Note that it matters whether you check feof or ferror, because the error indicator for a stream is sticky and can evaluate true even when hitting eof was the cause of fgetc failure. Normally you should use feof to check, and if it returns false, conclude that the loop stopped due to a new error.