> Ich kann in einem 25 Byte-File nicht auf einen Offset von 100
> Bytes nach dem Anfang oder 100 Bytes vor dem Ende
> positionieren, herrje wer hat sich das ausgedacht?!
Doch, man kann das (und Du hast das ja auch gesehen). Es ist
durchaus sinnvoll die aktuelle Position auch hinter das akutelle
Ende der Datei zu setzen (z.B. um Daten anzufügen). Das man nach
dem fseek() nichts lesen kann ist allerdings auch anzunehmen...
(Und wenn "sparse files" unterstüzt werden kann man sogar
'grosse' Offsets nehmen ohne das die Datei entsprechend gross
wird).
--
"I'm working on it." <http://www.psyche.kn-bremen.de/> ICQ=46996186
DMCA, SSSCA, USAA, ATA: Land of the Free?
Patrick Piecha wrote:
>
> Hi.
>
> Ich habe ein File in.asc mit einer Laenge von 25 Bytes, wie man
> sieht. Kann mir dann bitte mal jemand erklaeren, was fseek da
> macht? Entweder gehoeren die Leute von der libc ganz ganz lange
> weggeschlossen oder ich muss ein paar Wochen auf die Bahamas.
>
> Ich kann in einem 25 Byte-File nicht auf einen Offset von 100
> Bytes nach dem Anfang oder 100 Bytes vor dem Ende positionieren,
> herrje wer hat sich das ausgedacht?!
Ist aber so. Du kannst sogar negative Abstaende angeben.
Erklaerung (resp. Versuch einer):
Bei fseek gibts du an, wohin du willst.
5 vorwaerts, nach Muenschen auf den Stachus, 8 zurück.
Es garantiert dir aber niemand, ob da auch was ist.
Aufgabe:
Schlage einen Nagel in 500 km Hoehe in eine Wand.
Je nach System schlaegst du entweder ins Leere oder es entsteht auf
wundersame Weise eine 500 km hohe Wand.
Die Aufgabenstellung ist zulaessig.
Ob sie sinnvoll ausgefuehrt werden kann, haengt vom System ab.
MFG
Volkmar Kostka
Patrick Piecha wrote:
>
> Hi.
>
> Ich habe ein File in.asc mit einer Laenge von 25 Bytes, wie man
> sieht. Kann mir dann bitte mal jemand erklaeren, was fseek da
> macht? Entweder gehoeren die Leute von der libc ganz ganz lange
> weggeschlossen oder ich muss ein paar Wochen auf die Bahamas.
Nimm Dir genug zum Lesen mit.
>
> Ich kann in einem 25 Byte-File nicht auf einen Offset von 100
> Bytes nach dem Anfang oder 100 Bytes vor dem Ende positionieren,
> herrje wer hat sich das ausgedacht?!
Doch, das geht auf allen Unix-Systemen (Stichwort "Sparse File"),
ist auch (z.B. bei X/Open) so spezifiziert:
| The fseek() function allows the file-position indicator
| to be set beyond the end of existing data in the file. ...
Was der C-Standard (nicht Unix/Posix sondern ISO) dazu sagt,
habe ich jetzt nicht gesucht - selbst wenn er es nicht vorschreibt,
wird er dieses Unix-uebliche Verhalten aber wohl nicht verbieten.
Gruss,
Joerg
--
Joerg Bruehe, SQL Datenbanksysteme GmbH, Berlin, Germany
(speaking only for himself)
mailto: jo...@sql.de
Gibt es einen konkreten Grund dafür, daß du dir nicht die verfügbare
Dokumentation durchliest, und stattdessen hier postest?
Felix