Verständnisproblem fseek und fgetpos

Dieses Thema im Forum "C/C++" wurde erstellt von EXS#42, 15.09.2008.

  1. EXS#42

    EXS#42 Grünschnabel

    Dabei seit:
    08.09.2008
    Beiträge:
    5
    Zustimmungen:
    0
    Moin,

    ich würde gerne wissen wie man ANSI C gerecht in einer Datei navigiert. In meinem Buch "Linux/Unix Systemprogrammierung" von Helmut Herold hat es den Anschein als gäbe es alte Funktionen (fseek, ftell) die man nicht verwenden sollte und neue Funktionen (fgetpos, fsetpos) die man stattdessen verwenden sollte.

    Ich versteh allerdings nicht ganz wie man jetzt mit
    Code:
    fgetpos
    eine bestimmte Position in einer Datei anspricht? So wie mit
    Code:
    fseek
    bei dem man einen Offset und eine Startposition angeben kann, scheint es ja nicht zu gehen. Wenn ich das richtig verstanden habe müsste ich mit
    Code:
    fgetpos
    byte-weise die Datei lesen, bis ich da bin wo ich eigentlich hinwollte. Ist aber eher unperformant.

    Was ich eigentlich machen will ist folgendes. Ich möchte 512 Bytes in eine Datei schreiben und zwar an eine bestimmte Stelle der Datei.

    Gefunden hab ich folgenden Link http://bytes.com/forum/thread200980.html, da hat jemand ein ähnliches Problem. Allerdings scheinen die sich auch nicht einig zu sein, wie man das jetzt am besten in den Griff bekommt.

    mfg
    EXS
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Tropezien, 30.09.2008
    Tropezien

    Tropezien Ja, aber hallo ...

    Dabei seit:
    09.12.2004
    Beiträge:
    18
    Zustimmungen:
    0
    Die manpage von fsetpos sagt:

    Insbesondere wichtig ist:
    which the application shall ensure is a value obtained from an earlier call to fgetpos()

    fgetpos() und fsetpos() werden als Pärchen verwendet, um eine bestimmte Stelle einer Datei zu speichern und danach wieder genau an die Stelle zurückkehren zu können. Also zuerst fgetpos(), dann irgendwelche read/write/seek-Operationen, dann fsetpos() und man ist wieder an der alten Stelle zurück.
    Für eine wahlfreie Positionierung bist Du also auch weiterhin auf fseek() angewiesen. Im übrigen weist
    Code:
    fpost_t pos = 22
    dem struct fpos_t pos, also mithin der Adresse der Variablen, den Wert 22 zu. Macht man das im gdb kommt auch gleich zur Warnung "invalid cast". Das fpos_t sieht auf meiner Linux-Box auch so aus:
    Code:
    (gdb) p pos
    $6 = {
      __pos = 0,
      __state = {
        __count = 0,
        __value = {
          __wch = 3221220136,
          __wchb = "(ëÿ¿"
        }
      }
    }
    
    Es würde mich interessieren, wie es bei Dir den Anschein erwecken konnte, dass die Funktionen fseek und ftell nicht verwendet werden sollten.
     
Thema:

Verständnisproblem fseek und fgetpos

Die Seite wird geladen...

Verständnisproblem fseek und fgetpos - Ähnliche Themen

  1. grep verständnisproblem

    grep verständnisproblem: Hallo ich hatte ja lange keine anfängerfragen mehr :P Deswegen hier mal eine zu grep: Ich habe eine Textdatei: Hamburg Aschaffenburg...
  2. Lisp, Verständnisproblem

    Lisp, Verständnisproblem: hallo, ich arbeite gerade den online LISP Kurs der UNI Trier durch. Die Aufgabe lautet ---------- 4. Definiere eine Funktion NREST, die...
  3. Verständnisproblem mit array in bash

    Verständnisproblem mit array in bash: Hi zusammen für jedes der Elemente in meinem Skript möchte ich eine Aktion starten und bei Erfolg das Element aus dem Array löschen. Das...
  4. Unix Grundlangen Verständnisproblem

    Unix Grundlangen Verständnisproblem: Einen schönen guten Abend Forum! Hintergrundinformation: Ein Perlscript listet mir den Inhalt eines Verzeichnis in eine Datei. Diese Einträge,...
  5. Winbind Verständnisproblem

    Winbind Verständnisproblem: Hallo Leute, ich habe eine Frage die mich sehr beschäftigt. Ich habe jetzt meine Samba-Server in meine ADS gehangen und es funzt soweit alles...