fseek, _fseeki64
Přesune ukazatel na soubor do zadaného umístění.
int fseek(
FILE *stream,
long offset,
int origin
);
int _fseeki64(
FILE *stream,
__int64 offset,
int origin
);
Parametry
stream
Ukazatel na strukturu FILE.offset
Počet bajtů od origin.origin
Počáteční pozice.
Vrácená hodnota
Pokud je úspěšná, fseek a _fseeki64 , vrátí hodnotu 0.V opačném případě vrací nenulovou hodnotu.Na neschopnosti usilující o zařízení vrácená hodnota je undefined.Pokud stream je ukazatel s hodnotou null, nebo pokud origin není jedním z povolených hodnot, které jsou popsány níže, fseek a _fseeki64 vyvolat obslužnou rutinu neplatný parametr, jak je popsáno v Ověření parametru.Pokud smí provádění pokračovat, tyto funkce nastaví errno na EINVAL a vrátí -1.
Poznámky
fseek a _fseeki64 funkce přesune ukazatel souboru (pokud existuje) spojené s stream do nového umístění, které je offset bajtů od origin*.* Další operace v datovém proudu se uskuteční na novém místě.U otevřené pro aktualizaci datového proudu lze další operace čtení nebo zápisu.Původ argument musí být jeden z následujících konstant, definované v STDIO.H:
SEEK_CUR
Aktuální pozice ukazatele souboru.SEEK_END
Konec souboru.SEEK_SET
Začátek souboru.
Můžete použít fseek a _fseeki64 Chcete-li přemístit ukazatel myši kdekoli v souboru.Ukazatel myši lze také umístit za koncem souboru.fseeka _fseeki64 vymaže indikátor konce souboru a Neguje působení jakékoli předchozí ungetc volá proti stream.
Pokud je soubor otevřen pro přidávání dat, aktuální pozice v souboru je určen poslední vstupně-výstupní operace, nikoli kde by se vyskytnout další zápis.Pokud žádné vstupně-výstupní operace došlo ještě na soubor otevřen pro přidávání, umístění souboru je na začátek souboru.
U datových proudů otevřených v textovém režimu fseek a _fseeki64 mají omezené použití, protože může způsobit carriage return – linefeed překlady fseek a _fseeki64 k neočekávaným výsledkům.Pouze fseek a _fseeki64 jsou operace zaručeno, že práce na datových proudů otevřených v textovém režimu:
Hledání s posunem 0 vzhledem k původu hodnot.
Hledání od začátku souboru hodnotu offsetu vrácená z volání ftell při použití fseek nebo _ftelli64 při použití _fseeki64.
Také v textovém režimu, je interpretován CTRL + Z jako znak konce souboru na vstupu.V souborech otevřen pro čtení nebo zápis fopen a všechny související rutin kontrolu CTRL + Z na konci souboru a pokud možno jej odebrat.Důvodem je že pomocí kombinace fseek a ftell nebo _fseeki64 a _ftelli64, chcete-li přesunout do souboru, který může způsobit končí CTRL + Z fseek nebo _fseeki64 na konci souboru fungovat správně.
Pokud CRT otevře soubor, který začíná s značku pořadí bytů (BOM), ukazatel souboru je umístěn za Kusovníku (to znamená na začátku skutečného obsahu souboru).Pokud máte k fseek na začátku souboru, použijte ftell k získání počáteční pozice a fseek k němu, nikoli na pozici 0.
Tato funkce zamkne ostatní vlákna během provádění a proto je vláknově bezpečné.Nezamykací verzi naleznete v _fseek_nolock, _fseeki64_nolock.
Požadavky
Funkce |
Požadované záhlaví |
---|---|
fseek |
<stdio.h> |
_fseeki64 |
<stdio.h> |
Další informace o kompatibilitě naleznete v úvodu tématu Kompatibilita.
Příklad
// crt_fseek.c
// This program opens the file FSEEK.OUT and
// moves the pointer to the file's beginning.
#include <stdio.h>
int main( void )
{
FILE *stream;
char line[81];
int result;
if ( fopen_s( &stream, "fseek.out", "w+" ) != 0 )
{
printf( "The file fseek.out was not opened\n" );
return -1;
}
fprintf( stream, "The fseek begins here: "
"This is the file 'fseek.out'.\n" );
result = fseek( stream, 23L, SEEK_SET);
if( result )
perror( "Fseek failed" );
else
{
printf( "File pointer is set to middle of first line.\n" );
fgets( line, 80, stream );
printf( "%s", line );
}
fclose( stream );
}