fsetpos : <stdio.h> library function

The stdio C library function int fsetpos(FILE *stream, const fpos_t *pos); sets the current position in the stream to the position represented by pos. The argument pos is a pointer of type fpos_t object whose value was previously obtained by a call to fgetpos function.

Function prototype of fsetpos

int fsetpos(FILE *stream, const fpos_t *pos);
  • stream : A pointer to a FILE object which identifies a stream.
  • pos : This is a Pointer to a fpos_t object containing a position previously obtained by calling fgetpos function.

Return value of fsetpos

This function returns zero on success. In case of error it returns a non-zero value and sets the global variable errno to a system-specific positive value.

C program to show the use of fsetpos function

The following program shows the use of fgetpos function to get the position of first character in file and store it in a variable of type fpos_t. Later we will use this value to reset the file position indicator to point to first character of the file using fsetpos function. As a result, below program first prints the first four characters of the file then it again starts printing from the first character of the file.

#include <stdio.h>

int main(){
   FILE *file;
   int ch, counter;
   fpos_t position;

   file = fopen("textFile.txt","r");
   if (file==NULL){
       perror("Error: Unable to open a file");
       return(1);
   }
   /* Storing position of first character in file */
   fgetpos(file, &position);
   
   for (counter = 0; counter < 23; counter++){
       if(counter == 4){
       /* Resetting file position pointer to starting position*/
           fsetpos(file, &position);
       }
       ch = fgetc(file);
       printf("%c",ch);
   }   
   fclose(file);

   return 0;
}

Program Output
TechTechCrashCourse.com