Ftell() Function in C
Ftell(): In File Handling we have some special functions like Ftell(), Fseek(), rewind() etc.. while you are randomly accessing the file these functions play very important role and these functions have their specific applications.
In this content we are going to discuss about the ftell() function completely with an examples.
What is ftell() function in c?
As the name suggest it will tell the position of the file pointer with respective to the starting of the file.
The ftell() function returns the current file position of the specified stream of the starting position.
We can use ftell() function to get the total size and length of a file after moving the file pointer at the end of the file. We can use seek_end constant to move the file pointer at the end of the file and seek_set is used to set the value.
Syntax for ftell() function:
long int ftell(FILE *stream)
Let’s see a simple example, Suppose we have the file like ABCD.txt and in this file we have printed like JAVATPOINT, for this text we have starting of the file and it would be started like the index 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, because of the 9 letters placed in the 9 indexes.
And now if you open the file in the read mode then the file pointer will be in the starting point. So, the position of the file pointer is 0th.
As shown below.
0123456789
JAVATPOINT
J stares at the 0th index and T stares at the 9th index. Using ftell() function we can find out the position of the file pointer.
If suppose we have moved to this file pointer to a specific position using fseek(), we can do this thing using fseek() we have moved this here to T and after that if you use ftell() then it will return 5. Because the index of the “T” is 5.
From the starting 1,2,..5 five bytes are going to be skipped and the sixth byte the file pointer is right now. And it will tell the starting of the file not at end of the file.
One of the application of the ftell() is generally used to find out the length of the file and how can we find out the length of the file also we will see with the help of the program.
Let’s see a simple code for file handling.
#include<stdio.h>
void main()
{
file *fp = NULL;
char ch;
char str[50];
fp = fopen(“xyz.txt”,”r”);
if(fp == NULL)
{
printf(“Unable to open the file”);
exit(1);
}
This is the simple program for opening and reading the file.
Now let’s see the simple example program on ftell() function:
#include<stdio.h>
#include<conio.h>
Void main()
{
FILE *fp;
int length;
clrscr();
fp = fopen(“file.txt”,”r”);
fseek (fp, 0, SEEK_END);
length = file(fp);
fclose(fp);
printf(“Size of the file: %d bytes”, length);
getch();
}
In this above example we are using two header files like
#include<stdio.h> and #include<conio.h>
And here we are using the fseek() function. we can see the fseek() function parameters and position of the file pointer.
SEEK_END is used to check at the end of the file. And the file is named *fp as file pointer, and the integer length as int length. Fopen() is used to open the file and reading mode of the text.
In the practical approach we are using the code for compilation as follows:
// the program for ftell() function
#include<stdio.h>
#include<conio.h>
Void main()
{
FILE *fp;
Clrscr();
Fp = fopen(“text.txt”,”r”);
Printf(“%d”,ftell(fp)); // After compiling we get the value like 0.
Fseek(fp,9,SEEK_SET);
Printf(“%d\n”,ftell(fp)); // After compiling we get the value 9.
Fseek(fp,9,SEEK_CUR);
Printf(“%d\n”,ftell(fp));
Fseek(fp,0,SEEK_END);
Printf(“%d\n”,ftell(fp)); // After compiling we get the value 9.
Getch();
}//main
Output:
0
9
18
39
The file pointer will open in the read mode. Here we are using the function void main() as without parameter and without return values. The 0 value is the current position of the file initially.
After printing the statement 9, SEEK_SET then Later we added the 9 to it. Then the file pointer will be moved to the 9.
Using the SEEK_SET we assigned the value and moved to the 9th position.
18 value is assigned in between the start and the end position.
And finally, the 39 value is last position of file.