fgetpos Function

Gets the stream’s file position.

Include

<stdio.h>

Prototype

int fgetpos(FILE *stream, fpos_t *pos);

Arguments

stream target stream
pos position-indicator storage

Return Value

Returns 0 if successful; otherwise, returns a non-zero value.

Remarks

The function stores the file-position indicator for the given stream in *pos if successful, otherwise, fgetpos sets errno.

Example

/* This program opens a file and reads bytes at */
/* several different locations. The fgetpos     */
/* function notes the 8th byte. 21 bytes are   */
/* read then 18 bytes are read. Next the        */
/* fsetpos function is set based on the         */
/* fgetpos position and the previous 21 bytes   */
/* are reread.                                  */

#include <stdio.h> /* for fgetpos, fread,    */
                   /* printf, fopen, fclose, */
                   /* FILE, NULL, perror,    */
                   /* fpos_t, sizeof         */

int main(void)
{
  FILE   *myfile;
  fpos_t pos;
  char   buf[25];

  if ((myfile = fopen("sampfgetpos.c", "rb")) ==
       NULL)
    printf("Cannot open file\n");
  else
  {
   fread(buf, sizeof(char), 8, myfile);
    if (fgetpos(myfile, &pos) != 0)
      perror("fgetpos error");
    else
    {
      fread(buf, sizeof(char), 21, myfile);
      printf("Bytes read: %.21s\n", buf);
      fread(buf, sizeof(char), 18, myfile);
      printf("Bytes read: %.18s\n", buf);
    }

  if (fsetpos(myfile, &pos) != 0)
    perror("fsetpos error");

  fread(buf, sizeof(char), 21, myfile);
  printf("Bytes read: %.21s\n", buf);
  fclose(myfile);
  }
}

Example Output

Bytes read: program opens a file
Bytes read: and reads bytes at
Bytes read: program opens a file