fseek (Windows CE 5.0)
Developing an Application > Microsoft C Run-time Library for Windows CE > Run-time Library Reference
Moves the file pointer to a specified location.
int fseek( FILE*stream,longoffset,intorigin);
Parameters
- stream
Pointer to FILE structure. - offset
Number of bytes from origin. - origin
Initial position.
Return Values
If successful, fseek returns 0.
Otherwise, it returns a nonzero value.
On devices incapable of seeking, the return value is undefined.
Remarks
The fseek function moves the file pointer (if any) associated with stream to a new location that is offset bytes from origin.
The next operation on the stream takes place at the new location. On a stream open for update, the next operation can be either a read or a write.
The argument origin must be one of the following constants, defined in Stdio.h:
- SEEK_CUR
Current position of file pointer - SEEK_END
End of file - SEEK_SET
Beginning of file
You can use fseek to reposition the pointer anywhere in a file. The pointer can also be positioned beyond the end of the file.
fseek clears the end-of-file indicator and negates the effect of any prior ungetc calls against stream.
When a file is opened for appending data, the current file position is determined by the last I/O operation, not by where the next write would occur. If no I/O operation has occurred on a file opened for appending, the file position is the start of the file.
For streams opened in text mode, fseek has limited use, because carriage return — linefeed translations can cause fseek to produce unexpected results.
The only fseek operations guaranteed to work on streams opened in text mode are as follows:
- Seeking with an offset of 0 relative to any of the origin values.
- Seeking from the beginning of the file with an offset value returned from a call to ftell.
Also in text mode, CTRL+Z is interpreted as an end-of-file character on input.
In files opened for reading/writing, fopen and all related routines check for a CTRL+Z at the end of the file and remove it if possible. This is done because using fseek and ftell to move within a file that ends with a CTRL+Z can cause fseek to behave improperly near the end of the file.
Example
/* FSEEK.C: This program opens the file FSEEK.OUT and
* moves the pointer to the file's beginning.
*/
#include <stdio.h>
void main( void )
{
FILE *stream;
char line[81];
int result;
stream = fopen( "fseek.out", "w+" );
if( stream == NULL )
printf( "The file fseek.out was not opened\n" );
else
{
fprintf( stream, "The fseek begins here: "
"This is the file 'fseek.out'.\n" );
result = fseek( stream, 23L, SEEK_SET);
if( result )
printf( "Fseek failed" );
else
{
printf( "File pointer is set to middle of first line.\n" );
fgets( line, 80, stream );
printf( "%s", line );
}
fclose( stream );
}
}
Output
File pointer is set to middle of first line.
This is the file 'fseek.out'.
Requirements
OS Versions: Windows CE 2.0 and later.
Header: stdlib.h.
Link Library: coredll.dll.
See Also
Send Feedback on this topic to the authors