fseek : <stdio.h> library function

The function int fseek(FILE *stream, long int offset, int where); sets the position indicator of the stream to a new position. The new position is defined by adding offset to a reference position specified by where. The value of where should be one of the following constants defined in stdio.h header file.

Constant Description
SEEK_SET Beginning of file
SEEK_END End of file
SEEK_CUR Current position of the file pointer

Function prototype of fseek

int fseek(FILE *stream, long int offset, int where);
  • stream : This is a pointer to a FILE object which identifies a stream.
  • offset : This is the number of bytes to offset from where.
  • where : This is the position from where offset is added to set new position of file position indicator.

Return value of fseek

This function returns a zero on success otherwise it returns a non-zero value.

C program using fseek function

The following program shows the use of fseek function to set the file position indicator to 4th position instead of starting from 0th position.


int main(){
   FILE *file;
   int ch;
   /* Open a file for reading */
   file = fopen("textFile.txt","w+");
   if(file == NULL){
      perror("Error: Unable to open a file");
   } else {
       fputs("TechCrashCourse.com", file);
       /*Setting file pointer position to 5th Character */
       fseek(file, 4, SEEK_SET);
       /* It will skip first four characters */
          ch = fgetc(file);
          printf("%c", ch);