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
- 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 using 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); }
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