fseek (Windows CE 5.0)

Send Feedback

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

ftell

Send Feedback on this topic to the authors

Feedback FAQs

© 2006 Microsoft Corporation. All rights reserved.