Positions the file to the specified byte offset in the file. Format #include <stdio.h> int fseek (FILE *file_ptr, long int offset, int direction);
1 – Arguments
file_ptr A file pointer. offset The offset, specified in bytes. direction An integer indicating the position to which the offset is added to calculate the new position. The new position is the beginning of the file if direction is SEEK_SET, the current value of the file position indicator if direction is SEEK_CUR, or end-of-file if direction is SEEK_END.
2 – Description
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.
3 – Return Values
0 Indicates successful seeks. -1 Indicates improper seeks.