Definition | #include <stdio.h> int fseek(FILE *stream, long int offset, int whence); | |||||||||||||||||||||||||||||||||||||||
Beschreibung | Wenn POSIX-Dateien ausgeführt werden, verhält sich die Funktion XPG-konform wie folgt:
Die neue Position, gemessen in Bytes vom Anfang der Datei, wird durch die Addition von offset zu der durch whence angegebenen Position ermittelt. Der angegebene Punkt ist der Dateianfang bei Sollen Ein-/Ausgabe-Funktionen für Langzeichen auf stream angewendet werden, mussoffset entweder Ein erfolgreicher Aufruf von Wenn auf einem gegebenen Datenstrom die letzte Operation ungleich
Ist der Datenstrom zum Schreiben geöffnet und wurden gepufferte Daten noch nicht in die zu Grunde liegende Datei geschrieben, bewirkt Die Funktion Es besteht kein funktionaler Unterschied zwischen BS2000
In Textdateien (SAM im Textmodus, ISAM) kann man absolut auf Dateianfang und -ende positionieren sowie auf eine vorher mit In Binärdateien (SAM im Binärmodus, PAM, INCORE) kann sowohl absolut (s.o.) als auch relativ um eine gewünschte Anzahl Bytes, bezogen auf Dateianfang, aktuelle Position oder Dateiende positioniert werden. Für die Parameter offset und whence sind Bedeutung, Kombinationsmöglichkeiten und Wirkung für Text- und Binärdateien unterschiedlich und werden deshalb im Folgenden getrennt beschrieben: Textdateien (SAM im Textmodus, ISAM)Mögliche Werte:
Sinnvolle Kombinationsmöglichkeiten und Wirkung:
Binärdateien (SAM im Binärmodus, PAM, INCORE)Mögliche Werte:
Sinnvolle Kombinationsmöglichkeiten und Wirkung:
(Ende) | |||||||||||||||||||||||||||||||||||||||
Returnwert | 0 | bei Erfolg. | ||||||||||||||||||||||||||||||||||||||
| -1 | Ein Positionieren auf der angegebenen Datei ist nicht möglich. Ungültiges Positionieren kann beispielsweise ein | ||||||||||||||||||||||||||||||||||||||
Fehler |
| |||||||||||||||||||||||||||||||||||||||
| Das Kennzeichen | |||||||||||||||||||||||||||||||||||||||
| Der stream zu Grunde liegende Dateideskriptor ist nicht zum Schreiben geöffnet oder der Puffer des Datenstroms muss geleert werden, und die Datei ist nicht geöffnet. | |||||||||||||||||||||||||||||||||||||||
| Es wurde versucht, in eine Datei zu schreiben, deren Größe die maximale Dateigröße oder die Grenze des Prozesses für die Dateigröße überschreitet (siehe auch | |||||||||||||||||||||||||||||||||||||||
| Die Schreiboperation wurde durch den Empfang eines Signals beendet, und es wurden keine Daten übertragen. | |||||||||||||||||||||||||||||||||||||||
| whence ist ein ungültiges Argument. Der sich daraus ergebende Wert des Lese-/Schreibzeigers ist negativ. | |||||||||||||||||||||||||||||||||||||||
| Ein Ein-/Ausgabefehler ist aufgetreten. Der Prozess ist Mitglied einer Hintergrund-Prozessgruppe und versucht auf das steuernde Terminal zu schreiben, | |||||||||||||||||||||||||||||||||||||||
| Auf dem Datenträger, auf dem sich die Datei befindet, ist kein freier Platz mehr vorhanden. | |||||||||||||||||||||||||||||||||||||||
| Es wurde der Versuch unternommen, auf eine Pipe oder FIFO zu schreiben, die von keinem Prozess zum Lesen geöffnet war. Außerdem wird das Signal Werden Threads verwendet, so wirkt sich die Funktion auf den Prozess oder auf einen Thread wie folgt aus: Beim | |||||||||||||||||||||||||||||||||||||||
| Das Gerät existiert nicht oder es kann darauf nicht zugegriffen werden. | |||||||||||||||||||||||||||||||||||||||
| Für fseek(): der resultierende Datei-Offset-Wert kann in einem Objekt des Typs long nicht korrekt dargestellt werden. | |||||||||||||||||||||||||||||||||||||||
| Für fseeko(): der resultierende Datei-Offset-Wert kann in einem Objekt des Typs | |||||||||||||||||||||||||||||||||||||||
Hinweise | Obwohl in POSIX-Dateien eine von Ob BS2000 Der Aufruf Werden in eine Textdatei neue Sätze geschrieben (geöffnet zum Neuerstellen oder Anfügen) und erfolgt ein Ausnahme bei ANSI-Funktionalität: Wenn die Daten einer ISAM-Datei im Puffer nicht mit einem Zeilenendezeichen enden, bewirkt Wird bei einer Binärdatei hinter das Dateiende positioniert, entsteht eine Lücke zwischen den letzten physisch gespeicherten Daten und den neu geschriebenen Daten. Lesen aus dieser Lücke liefert binäre Nullen. Auf Systemdateien (SYSDTA, SYSLST, SYSOUT) kann nicht positioniert werden. Ein erfolgreicher Aufruf von Bei Satz-E/A kann
Bei Aufrufen mit anderen Argumenten liefert | |||||||||||||||||||||||||||||||||||||||
Siehe auch |
|