fseek mit Variabele als Offset machbar?



  • Liebes Forum,

    ich bin C-Beginner und experimentiere mit Dateien herum.

    Ich möchte eine Datei an einer Stelle auslesen, die ich vorher berechnet habe.
    Ich finde aber nur fseek-Beispiele mit festen Werten (0L, 2L...).

    Ich habe das hier verucht:

    long l; 
    l = (long)s; /* der Offset in s wird auf long angepasst */
    fseek(datei, lL, SEEK_SET);
    

    Funktioniert aber nicht 😞

    Wie kann ich das hinbekommen?
    Danke!



  • Wie wäre es, wenn du erst mal ordentlich C lernst, anstatt zu lernen, außerhalb deines Programms (Dateien) zu arbeiten?

    fseek(datei,(long)s,SEEK_SET);
    

    Pass aber auf, dass die Konvertierung von s auf long nicht wichtige Informationen löscht. Ansonsten bau' dir lieber einen Wrapper, der einen uint64_t übernimmt, über SEEK_CUR arbeitet und maximal in LONG_MAX -Schritten weitergeht.

    Und jetzt weißt du, was ich mit "ordentlich C lernen" meine.



  • dachschaden schrieb:

    Wie wäre es, wenn du erst mal ordentlich C lernst, anstatt zu lernen, außerhalb deines Programms (Dateien) zu arbeiten?

    fseek(datei,(long)s,SEEK_SET);
    

    Pass aber auf, dass die Konvertierung von s auf long nicht wichtige Informationen löscht. Ansonsten bau' dir lieber einen Wrapper, der einen uint64_t übernimmt, über SEEK_CUR arbeitet und maximal in LONG_MAX -Schritten weitergeht.

    Und jetzt weißt du, was ich mit "ordentlich C lernen" meine.

    Funktioniert!
    Schön, dass Du geantwortet hast, aber Dein Tonfall ist echt zum Kotzen!
    Trotzdem, danke!



  • Du schaffst es weder, dein C-Tutorial oder Buch oder Lernquelle oder was auch immer zu bemühen, herauszufinden, wie man Parameterübergabe gestaltet. Und auch Googlen kannst du nicht.

    Mein Ton ist nicht mal zum Kotzen; du bist einfach faul und magst es nicht, wenn man dich darauf anspricht. Und wenn dir nicht gefällt, dass die Leute dir das ins Gesicht sagen, dann bist du hier falsch. Ganz einfach.



  • x0r schrieb:

    Schön, dass Du geantwortet hast, aber Dein Tonfall ist echt zum Kotzen!

    Hab ich bei Posts von Dachschaden auch schon oft gedacht.
    Dieses Mal aber ist das nicht der Fall und ich kann Deine Bemerkung überhaupt nicht nachvollziehen ... Du bist evtl. zu dünnhäutig 🙄



  • Wenn du die stdio.h (richtig) einbindest, weiß der Compiler, dass der zweite Parameter vom Typ long ist.

    Dann brauchst du da nichts casten oder sonstige Verenkungen machen.


Anmelden zum Antworten