The getc macro returns the next byte from the input stream specified by the file_ptr parameter and moves the file pointer, if defined, ahead one byte in the input stream. Since getc is a macro, a file pointer argument with side effects (for example, getc (*f++)) might be evaluated incorrectly. In such a case, use the fgetc function instead. See the fgetc function. See also getc_unlocked.