Frage zu Pointern



  • Hallo !
    Ich hätte mal eine Frage kann mir bitte jemand erklären was da genau passiert ?

    long int getSize(FILE *pointer)
    {
    fseek(fp, 0, SEEK_END);
    long int size = ftell(pointer);

    return size;
    }

    Lg



  • sollte fp nicht auch pointer heißen ? 🙂



  • entschuldige ja nochmal:

    long int getSize(FILE *pointer)
    {
      fseek(pointer, 0, SEEK_END);
      long int size = ftell(pointer);
    
      return size;
    }
    


  • Die Funktion liefert die Größe einer Datei zurück, indem sie die Leseposition ans Ende verschiebt - fseek, die aktuelle Position abfragt - ftell und es anschließend zurückgibt.
    pointer ist hierbei ein Zeiger auf eine FILE Struktur, der via fopen gesetzt wurde.



  • fseek(pointer, 0, SEEK_END); ; : Der Lesezeiger (das ist ncht pointer) wird an das Ende der Datei gesetzt

    long int size = ftell(pointer); : Die Position vom Lesezeiger wird ausgelesen und der Variablen size zugewiesen.

    So kannst du die Größe einer Datei ermitteln.

    Das gilt aber nur für Dateien, die im binary-Modus ("rb") geöffnet wurden.



  • hallo danke für eure antworten :-)!!!

    und was bedeutet in dem Fall 0 ? hab nachgelesen und das ist das "offset" kann mir darunter aber leider nicht wirklich vorstellen wozu das genau dient ?
    lg



  • Der offset gibt an wieweit der Lesepointer entsprechend der Referenzposition bewegt werden soll (Anfang (SEEK_SET), Ende (SEEK_END), aktuelle Position (SEEK_CUR)). Beispiele:
    fseek(fp, 0, SEEK_END) bewegt die Position ans Ende fseek(fp, 0, SEEK_SET) an den Anfang.
    fseek(fp, 5, SEEK_SET) an Position 5.
    fssek(fp, 3, SEEK_CUR) 3 Positionen weiter.



  • alles klar ich danke dir für die Erklärung !!! 🙂


Anmelden zum Antworten