return the current read/write position of a file
#include <stdio.h> long int ftell( FILE *fp );
The ftell() function returns the current read/write position of the file specified by fp. This position defines the character that will be read or written by the next I/O operation on the file. The value returned by ftell() can be used in a subsequent call to fseek() to set the file to the same position.
The ftell() function returns the current read/write position of the file specified by fp. When an error is detected, -1L is returned. When an error has occurred, errno contains a value that indicates the type of error that has been detected.
errno, fgetpos(), fopen(), fsetpos(), fseek()
#include <stdio.h>
long int filesize( FILE *fp )
  {
    long int save_pos, size_of_file;
    save_pos = ftell( fp );
    fseek( fp, 0L, SEEK_END );
    size_of_file = ftell( fp );
    fseek( fp, save_pos, SEEK_SET );
    return( size_of_file );
  }
void main()
  {
    FILE *fp;
    fp = fopen( "file", "r" );
    if( fp != NULL ) {
      printf( "File size=%ld\n", filesize( fp ) );
      fclose( fp );
    }
  }
ANSI
All (except DOS/PM)