How can I get the current line position of the file pointer?
The ftell() function in C++ returns the current position of the file pointer.
The ftell() function obtains the current value of the file position indicator for the stream pointed to by stream.
The seek() function sets the position of a file pointer and the tell() function returns the current position of a file pointer.
There is no function to get the current line; you'll have to keep track of it yourself. Something like this:
FILE *file;
int c, line;
file = fopen("myfile.txt", "rt");
line = 0; /* 1 if you want to call the first line number 1 */
while ((c = fgetc(file)) != EOF) {
if (c == '\n')
++line;
/*
... do stuff ...
*/
}
You need to use ftell to give you the position within the file.
If you want the current line, you'll have to count the number of line terminator sequences between the start of the file and the position. The best way to do that is to probably start at the beginnning of the file and simmply read forward until you get to the position, counting the line terminator sequences as you go.
If you want the current line position (I assume you mean which character of the current line you're at), you'll have to count the number of characters between the line terminator sequence immediately preceding the position, and the position itself.
The best way to do that (since reading backwards is not as convenient) is to use fseek to back up a chunk at a time from the position, read the chunk into a buffer, then find the last line terminator sequence in the chunk, calculating the difference between that point and the position.
There is no function that gives you current line. But you can use ftell function to get the offset in terms of number of char from the start of the file.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With