fseek mit variable



  • Hallo,

    Ich habe folgendes Problem :

    int fseek(FILE *datei, long offset, int origin);

    Bei offset muss immer folgendes Format eingehalten werden , um den Dateizeiger z. B. um ... Zeichen nach links zu verschieben :

    fseek(file1, -20L, SEEK_CUR);

    Wie kann ich aber einen Dateizeiger um den Wert einer Variable nach links verschieben? Beispiel :

    int ivar = 10 / int ivar = -10 --> Wie kann ich den Lesezeiger um den Wert dieser Variable nach links verschieben?



  • variable verwenden ( negativer Wert )



  • Verstehe deine Frage nicht, hast dir schon mal die Dokumentation zu fseek() angesehen, ist doch eigentlich ganz einfach.

    long x = -20;
    
    fseek(file,x,SEEK_CUR);
    

    Hab das jetzt nicht versucht, aber warum sollte es nicht funktionieren ??

    Als alternative kann mans auch so machen :

    long old;
    long offset;
    
    offset = 20;  //um 20 bytes nach links verschieben
    
    old  = ftell(file);
    
    offset = old - offset;
    
    fseek(file,offset,SEEK_SET);
    

    Vorher natürlich überprüfen ob offset nicht negativ ist nach der Berechnung.


Anmelden zum Antworten