lseek
Nach oben zu io.h - Index
Header-Datei
io.h
Kategorie
Eingabe-/Ausgaberoutinen
Prototyp
long lseek(int handle, long offset, int fromwhere); __int64 _lseeki64(int handle, __int64 offset, int fromwhere);
Beschreibung
Verschiebt den Dateizeiger.
lseek bewegt den handle zugeordneten Dateizeiger an eine neue Position, die sich offset Bytes hinter der durch fromwhere festgelegten Dateiposition befindet. fromwhere muss einer der folgenden (in io.h definierten) symbolischen Konstanten entsprechen:
|
Aktuelle Dateizeigerposition |
|
Dateiende (EOF) |
|
Dateianfang |
Rückgabewert
lseek gibt den Offset der neuen Zeigerposition ab dem Dateianfang in Bytes zurück. Bei einem Fehler gibt lseek -1L
zurück, und der globalen Variablen errno wird einer der folgenden Werte zugewiesen:
|
Bad file handle (Ungültiges Datei-Handle) |
|
Invalid argument (Ungültiges Argument) |
|
Illegal seek on device (Ungültige Neupositionierung auf dem Gerät) |
Bei Geräten, die keine Suchoperationen unterstützen (wie Terminals und Drucker), ist der Rückgabewert undefiniert.
Beispiel
#include <sys\stat.h>; #include <string.h> #include <stdio.h> #include <fcntl.h> #include <io.h> int main(void) { int handle; char msg[] = "This is a test"; char ch; /* Eine Datei erstellen */ handle = open("TEST.$$$", O_CREAT | O_RDWR, S_IREAD | S_IWRITE); /* Daten in die Datei schreiben */ write(handle, msg, strlen(msg)); /* Auf Dateianfang zurücksetzen */ lseek(handle, 0L, SEEK_SET); /* Zeichen aus der Datei lesen, bis EOF erreicht wird */ do { read(handle, &ch, 1); printf("%c", ch); } while (!eof(handle)); close(handle); return 0; }
Portabilität
POSIX | Win32 | ANSI C | ANSI C++ |
---|---|---|---|
+ |
+ |