#### 14.2.19 File Positioning ¶

Three functions are available for setting and determining the position of the file pointer for a given file.

`pos =` ftell `(fid)` ¶

  Return the position of the file pointer as the number of characters from the beginning of the file specified by file descriptor fid.

  See also: fseek, frewind, feof, fopen.

`status =` fseek `(fid, offset)` ¶
`status =` fseek `(fid, offset, origin)` ¶

  Set the file pointer to the location offset within the file fid.

  The pointer is positioned offset characters from the origin, which may be one of the predefined variables `SEEK_SET` (beginning), `SEEK_CUR` (current position), or `SEEK_END` (end of file) or strings `"bof"`, `"cof"`, or `"eof"`. If origin is omitted, `SEEK_SET` is assumed. offset may be positive, negative, or zero but not all combinations of origin and offset can be realized.

  `fseek` returns 0 on success and -1 on error.

  See also: fskipl, frewind, ftell, fopen, SEEK_SET, SEEK_CUR, SEEK_END.

`fseek_origin =` SEEK_SET `()` ¶

  Return the numerical value to pass to `fseek` to position the file pointer relative to the beginning of the file.

  See also: SEEK_CUR, SEEK_END, fseek.

`fseek_origin =` SEEK_CUR `()` ¶

  Return the numerical value to pass to `fseek` to position the file pointer relative to the current position.

  See also: SEEK_SET, SEEK_END, fseek.

`fseek_origin =` SEEK_END `()` ¶

  Return the numerical value to pass to `fseek` to position the file pointer relative to the end of the file.

  See also: SEEK_SET, SEEK_CUR, fseek.

frewind `(fid)` ¶
`status =` frewind `(fid)` ¶

  Move the file pointer to the beginning of the file specified by file descriptor fid.

  If an output status is requested then `frewind` returns 0 for success, and -1 if an error is encountered.

  Programming Note: `frewind` is equivalent to `fseek (fid, 0, SEEK_SET)`.

  See also: fseek, ftell, fopen.

The following example stores the current file position in the variable `marker`, moves the pointer to the beginning of the file, reads four characters, and then returns to the original position.

    marker = ftell (myfile);
    frewind (myfile);
    fourch = fgets (myfile, 4);
    fseek (myfile, marker, SEEK_SET);