ftell : <stdio.h> library function

The function long int ftell(FILE *stream); returns the current position of the given stream. It gets the current position from the position indicator of the stream.

Function prototype of ftell

long int ftell(FILE *stream);
  • stream : A pointer to a FILE object which identifies a stream.

Return value of ftell

This function returns the current value of the position indicator on success. In case of error, it returns -1L and sets the global variable errno to a system-specific positive value.

C program to show the use of ftell function

The following program shows the use of ftell function to get the current position of a stream. It traverse the file from beginning till end and prints the position of every character in file.

#include <stdio.h>

int main(){
   FILE *file;
   int c, position;
  
   file = fopen("textFile.txt","w+");
   if(file == NULL){
      perror("Error: Unable to open a file");
   } else {
       fputs("TechCrashCourse.com", file);
       fseek(file, 0, SEEK_SET);
       /* Printing characters and their positions in file */
       while(!feof(file)){
          c = fgetc(file);
          printf("%c is at position %d\n", c, ftell(file));
       }
       fclose(file);
   }
   
   return(0);
}

Program Output
T is at position 1
e is at position 2
c is at position 3
H is at position 4
C is at position 5
r is at position 6
a is at position 7
s is at position 8
H is at position 9
C is at position 10
o is at position 11
u is at position 12
r is at position 13
s is at position 14
e is at position 15
. is at position 16
c is at position 17
o is at position 18
m is at position 19