fgetpos
Pobiera wskaźnik położenia pliku strumienia.
Składnia
int fgetpos(
FILE *stream,
fpos_t *pos
);
Parametry
stream
Strumień docelowy.
pos
Magazyn wskaźnika położenia.
Wartość zwracana
Jeśli operacja powiedzie się, fgetpos
zwraca wartość 0. W przypadku błędu zwraca wartość niezerową i ustawia errno
na jedną z następujących stałych manifestu (zdefiniowanych w stDIO). H): EBADF
, co oznacza, że określony strumień nie jest prawidłowym wskaźnikiem pliku lub nie jest dostępny albo , co oznaczastream
, że wartość lub wartość pos
jest nieprawidłowa, EINVAL
na przykład jeśli jest wskaźnikiem o wartości null. Jeśli stream
lub pos
jest wskaźnikiem, funkcja wywołuje nieprawidłową procedurę NULL
obsługi parametrów zgodnie z opisem w temacie Weryfikacja parametrów.
Uwagi
Funkcja fgetpos
pobiera bieżącą wartość stream
wskaźnika pozycji pliku argumentu i zapisuje ją w obiekcie wskazywanym przez pos
element . Funkcja fsetpos
może później używać informacji przechowywanych w programie pos
, aby zresetować stream
wskaźnik argumentu do jego pozycji w momencie fgetpos
wywołania. Wartość pos
jest przechowywana w formacie wewnętrznym i jest przeznaczona do użytku tylko przez elementy fgetpos
i fsetpos
.
Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.
Wymagania
Function | Wymagany nagłówek |
---|---|
fgetpos |
<stdio.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Przykład
// crt_fgetpos.c
// This program uses fgetpos and fsetpos to
// return to a location in a file.
#include <stdio.h>
int main( void )
{
FILE *stream;
fpos_t pos;
char buffer[20];
if( fopen_s( &stream, "crt_fgetpos.txt", "rb" ) ) {
perror( "Trouble opening file" );
return -1;
}
// Read some data and then save the position.
fread( buffer, sizeof( char ), 8, stream );
if( fgetpos( stream, &pos ) != 0 ) {
perror( "fgetpos error" );
return -1;
}
fread( buffer, sizeof( char ), 13, stream );
printf( "after fgetpos: %.13s\n", buffer );
// Restore to old position and read data
if( fsetpos( stream, &pos ) != 0 ) {
perror( "fsetpos error" );
return -1;
}
fread( buffer, sizeof( char ), 13, stream );
printf( "after fsetpos: %.13s\n", buffer );
fclose( stream );
}
Dane wejściowe: crt_fgetpos.txt
fgetpos gets a stream's file-position indicator.
Crt_fgetpos.txt danych wyjściowych
after fgetpos: gets a stream
after fsetpos: gets a stream