Middleware, development tools, realtime operating system
software and services for superior embedded design


Home
QNX Community Resources
Developer Support
QNX Documentation Library
QNX Developer Support

QNX Developer Support

QNX Software Systems
Developer Resources
Blogs
Board support packages
Foundry27 projects
Forums
Hardware support listing
Online video tutorials
Product documentation
Technical Articles

[Previous] [Contents] [Index] [Next]

ftell(), ftello()

Return the current position of a stream

Synopsis:

#include <stdio.h>

long int ftell( FILE* fp );

off_t ftello( FILE* fp );

Arguments:

fp
The stream that you want to get the current position of.

Library:

libc

Use the -l c option to qcc to link against this library. This library is usually included automatically.

Description:

The ftell() function returns the current position of the stream specified by fp. This position defines the character that will be read or written by the next I/O operation on the file. You can use the value returned by ftell() in a subsequent call to fseek() to restore the file position to a previous value.

The ftello() function is similar to ftell(), except that the position is returned as an off_t.

Returns:

The current position of the file or -1L if an error occurred (errno is set).

Examples:

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

long filesize( FILE *fp )
{
    long int save_pos;
    long size_of_file;

    /* Save the current position. */
    save_pos = ftell( fp );
    
    /* Jump to the end of the file. */
    fseek( fp, 0L, SEEK_END );
    
    /* Get the end position. */
    size_of_file = ftell( fp );
    
    /* Jump back to the original position. */
    fseek( fp, save_pos, SEEK_SET );

    return( size_of_file );
}

int main( void )
{
    FILE *fp;

    fp = fopen( "file", "r" );

    if( fp != NULL ) {
        printf( "File size=%ld\n", filesize( fp ) );
        fclose( fp );
        
        return EXIT_SUCCESS;
    }
    
    return EXIT_FAILURE;
}

Classification:

ftell() is ANSI, POSIX 1003.1; ftello() is POSIX 1003.1

Safety:
Cancellation point Yes
Interrupt handler No
Signal handler No
Thread Yes

See also:

errno, fgetpos(), fopen(), fsetpos(), fseek()


[Previous] [Contents] [Index] [Next]