### _tell -- Get Pointer Position

Format

>     #include <io.h>
>     long _tell(int handle);

Language Level: Extension
_tell gets the current position of the file pointer associated with handle. The position is the number of bytes from the beginning of the file.

Return Value
_tell returns the current position. A return value of -1L indicates an error, and errno is set to one of the following values:

Value | Meaning
EBADF | The file handle is not valid.
EOS2ERR | The call to the operating system was not successful.

On devices incapable of seeking (such as screens and printers), the return value is -1L.

Example
This example opens the file tell.dat. It then calls _tell to get the current position of the file pointer and report whether the operation is successful. The program then closes tell.dat.

    #include <io.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <fcntl.h>

    #define FILENAME  "tell.dat"

    int main(void)
    {
       long filePtrPos;
       int fh;

       printf("Creating file.\n");
       system("echo Sample Program > " FILENAME);
       if (-1 == (fh = open(FILENAME, O_RDWR|O_APPEND))) {
          perror("Unable to open " FILENAME);
          remove(FILENAME);
          return EXIT_FAILURE;
       }
       /* Get the current file pointer position. */
       if (-1 == (filePtrPos = _tell(fh))) {
          perror("Unable to tell");
          close(fh);
          remove(FILENAME);
          return EXIT_FAILURE;
       }
       printf("File pointer is at position %d.\n", filePtrPos);
       close(fh);
       remove(FILENAME);
       return 0;

       /*******************************************************
          The output should be:

          Creating file.
          File pointer is at position 0.
       *******************************************************/
    }

fseek -- Reposition File Position
ftell -- Get Current Position
lseek -- Move File Pointer
<io.h>