RAD Studio |  |

fseek

Header File

stdio.h

Category

Input/output Routines

Prototype

int fseek(FILE *stream, long offset, int whence);

Description

Repositions a file pointer on a stream.

fseek sets the file pointer associated with stream to a new position that is offset bytes from the file location given by whence. For text mode streams offset should be 0 or a value returned by ftell.

whence must be one of the values 0. 1, or 2 which represent three symbolic constants (defined in stdio.h) as follows:

fseek discards any character pushed back using ungetc. fseek is used with stream I/O; for file handle I/O use lseek.

After fseek the next operation on an update file can be either input or output.

Return Value

fseek returns 0 if the pointer is successfully moved and nonzero on failure.

fseek might return a 0 indicating that the pointer has been moved successfully when in fact it has not been. This is because DOS, which actually resets the pointer, does not verify the setting. fseek returns an error code only on an unopened file or device.

In the event of an error return the global variable errno is set to one of the following values:

EBADF | Bad file pointer
EINVAL | Invalid argument
ESPIPE | Illegal seek on device

Example

Copy Code

    #include <stdio.h>
    long filesize(FILE *stream);
    int main(void)
    {
       FILE *stream;
       stream = fopen("MYFILE.TXT", "w+");
       fprintf(stream, "This is a test");
       printf("Filesize of MYFILE.TXT is %ld bytes\n", filesize(stream));
       fclose(stream);
       return 0;
    }
    long filesize(FILE *stream)
    {
       long curpos, length;
       curpos = ftell(stream);
       fseek(stream, 0L, SEEK_END);
       length = ftell(stream);
       fseek(stream, curpos, SEEK_SET);
       return length;
    }

Portability

POSIX | Win32 | ANSI C | ANSI C++
+ | + | + | +

Copyright(C) 2009 Embarcadero Technologies, Inc. All Rights Reserved.
What do you think about this topic? Send feedback!