The fseek function can position a fixed-length record-access
    file with no carriage control or a stream-access file on any
    byte offset, but can position all other files only on record
    boundaries.
    The available Standard I/O functions position a variable-length
    or VFC record file at its first byte, at the end-of-file, or on
    a record boundary. Therefore, the arguments given to fseek must
    specify any of the following:
    o  The beginning or end of the file
    o  A 0 offset from the current position (an arbitrary record
       boundary)
    o  The position returned by a previous, valid ftell call
    See the fgetpos and fsetpos functions for a portable way to seek
    to arbitrary locations with these types of record files.
                                 CAUTION
       If, while accessing a stream file, you seek beyond the
       end-of-file and then write to the file, the fseek function
       creates a hole by filling the skipped bytes with zeros.
       In general, for record files, fseek should only be directed
       to an absolute position that was returned by a previous
       valid call to ftell, or to the beginning or end of a file.
       If a call to fseek does not satisfy these conditions, the
       results are unpredictable.
    See also open, creat, dup, dup2, and lseek.