wie kann ich die größe einer datei auslesen?
-
und was muss ich der struktur übergeben?
wie weiß die struktur welches file? bitte ein kleines code bsp!danke!
-
#include <sys/types.h> #include <sys/stat.h> int main(){ struct stat fs; stat("filename.txt" , &fs); int filesize = fs.st_size; // Dateigröße return 0}
-
Und ich verstehe eines nicht: das hier ist ANSI-C Forum trotzdem werden hier dauern Betriebsystem-spezifische lösungen vorgeschlagen, ohne es zumindest zu erwähnen das es so ist.
-
Sorry , ber mir fällt halt nur die Lösung ein.
Funktioniert aber.
-
Marcin schrieb:
Und ich verstehe eines nicht: das hier ist ANSI-C Forum trotzdem werden hier dauern Betriebsystem-spezifische lösungen vorgeschlagen, ohne es zumindest zu erwähnen das es so ist.
Könnte evtl. daran liegen dass nicht jeder ständig für jedes Betriebssystem nen Compiler laufen hat und ständig auf beiden dasselbe ausprobiert...
Wenn's danach geht, macht doch bitte ein ANSI C (Windows), ein ANSI C (POSIX), ein ANSI C (BSD), ein ANSI C (SystemV), ein ANSI ............
-
oder auch ANSI C (ANSI C):
int len; FILE *f = fopen("file", "rb"); fseek(f, 0, CUR_END); len = ftell(f); fclose(f);
(ungetestet)
-
int getFileSize(char * Filename) { int len; FILE *f = fopen(Filename, "rb"); fseek(f, 0, SEEK_END); len = ftell(f); fclose(f); return len; }
Edit by c.rackwitz: Danke, dass Du meinen ungetesteten Code in eine Funktion gehuellt hast
-
c.rackwitz schrieb:
oder auch ANSI C (ANSI C):
int len; FILE *f = fopen("file", "rb"); fseek(f, 0, CUR_END); len = ftell(f); fclose(f);
(ungetestet)
Funktioniert in den meisten Fällen, aber nicht immer. Gab dazu mal einen Thread in dem erklärt wird warum das nicht funktioniert - finde ihn bloß leider nicht mehr
MfG SideWinder
-
SideWinder schrieb:
c.rackwitz schrieb:
oder auch ANSI C (ANSI C):
int len; FILE *f = fopen("file", "rb"); fseek(f, 0, CUR_END); len = ftell(f); fclose(f);
(ungetestet)
Funktioniert in den meisten Fällen, aber nicht immer. Gab dazu mal einen Thread in dem erklärt wird warum das nicht funktioniert - finde ihn bloß leider nicht mehr
Steht aber sogar im Standard, daß 'fseek(..., SEEK_END)' auf Binärströme angewandt, undefiniert ist (Fußnote 225, wen's interessiert) und für nicht binäre Ströme teilt ftell nicht mehr zuverlässig die Größe mit.
Ist aber vermutlich tatsächlich ein rein akademischer Einwand, auf den üblichen Betriebssystemen. Aber man sollte es vielleicht mal erwähnt haben.
-
@Danial E.: mmh.... programmierst du Compiler