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 gesetztlong 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 !!!