Defined in header <stdio.h>
int fsetpos( FILE *stream, const fpos_t *pos );

Sets the file position indicator and the multibyte parsing state (if any) for the file stream stream according to the value pointed to by pos.

Besides establishing new parse state and position, a call to this function undoes the effects of ungetc and clears the end-of-file state, if it is set.

If a read or write error occurs, the error indicator (ferror) for the stream is set.


stream - file stream to modify
pos - pointer to a fpos_t object to use as new value of file position indicator

Return value

​0​ upon success, nonzero value otherwise.


After seeking to a non-end position in a wide stream, the next call to any output function may render the remainder of the file undefined, e.g. by outputting a multibyte sequence of a different length.


fsetpos with error checking.

#include <stdio.h>
#include <stdlib.h>
int main(void)
    /* Prepare an array of f-p values. */
    #define SIZE 5
    double A[SIZE] = {1.,2.,3.,4.,5.};
    /* Write array to a file. */
    FILE * fp = fopen("test.bin", "wb");
    fclose (fp);
    /* Read the f-p values into array B. */
    double B[SIZE];
    fp = fopen("test.bin","rb");
    fpos_t pos;
    if (fgetpos(fp,&pos) != 0)      /* current position: start of file */
       fprintf(stderr,"fgetpos() failed in file %s at line # %d\n", __FILE__,__LINE__-3);
    int ret_code = fread(B,sizeof(double),1,fp);   /* read one f-p value */
    /* current position: after reading one f-p value */
    printf("%.1f; read count = %d\n", B[0], ret_code);   /* print one f-p value and ret_code */
    if (fsetpos(fp,&pos) != 0)   /* reset current position to start of file */
       if (ferror(fp))
          fprintf(stderr,"fsetpos() failed in file %s at line # %d\n", __FILE__,__LINE__-5);
    ret_code = fread(B,sizeof(double),1,fp);   /* reread first f-p value */
    printf("%.1f; read count = %d\n", B[0], ret_code);   /* print one f-p value and ret_code */
    return EXIT_SUCCESS; 


1.0; read count = 1
1.0; read count = 1


  • C11 standard (ISO/IEC 9899:2011):
    • The fsetpos function (p: 337)
  • C99 standard (ISO/IEC 9899:1999):
    • The fsetpos function (p: 303)
  • C89/C90 standard (ISO/IEC 9899:1990):
    • The fsetpos function

See also

gets the file position indicator
returns the current file position indicator
moves the file position indicator to a specific location in a file
C++ documentation for fsetpos

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.