### 4.6 `feof`, `feof_unlocked`—test for end of file

Synopsis

    #include <stdio.h>
    int feof(FILE *fp);

    #define _BSD_SOURCE
    #include <stdio.h>
    int feof_unlocked(FILE *fp);

Description
`feof` tests whether or not the end of the file identified by fp has been reached.

`feof_unlocked` is a non-thread-safe version of `feof`. `feof_unlocked` may only safely be used within a scope protected by flockfile() (or ftrylockfile()) and funlockfile(). This function may safely be used in a multi-threaded program if and only if they are called while the invoking thread owns the (FILE *) object, as is the case after a successful call to the flockfile() or ftrylockfile() functions. If threads are disabled, then `feof_unlocked` is equivalent to `feof`.

Returns
`feof` returns `0` if the end of file has not yet been reached; if at end of file, the result is nonzero.

Portability
`feof` is required by ANSI C.

`feof_unlocked` is a BSD extension also provided by GNU libc.

No supporting OS subroutines are required.