Wie kann ich mir die Größe einer Datei zurückgeben?
Eine Funktion lof() oder fsizeof() gibt es nicht in stdio.h
Wie kann ich mir die Größe einer Datei zurückgeben?
Eine Funktion lof() oder fsizeof() gibt es nicht in stdio.h
Beispiel:
Nähere Infos in der man-Page zu stat.Code:struct stat buf; if(stat("dateiname", &buf) == 0) { printf("Größe der Datei: %i\n", buf.st_size); }
c ya,
Tobias
Man könnte auch bytesize=system("du -b <Datei>") nehmen (wenn denn system nicht auch noch den Datei-Namen returnt, so wie bash), aber das ist Plattform-spezifisch (wegen dem du).
Hmm... eigentlich ist es nicht wesentlich Unix-spezifisch, allgemein in C würde ich gern wissen wie man die Bytegröße einer binären Datei herrausfindet.
Das einfachste ist ganz einfach die Datei lesend zu öffnen und sie Zeichen für Zeichen (Byte) einzulesen, bis das Dateiende erreicht ist
Bei Spielfilmen/Movies kann das aber etwas dauern ...
Über file-pointer am Datei-Anfang u. Datei-Ende müsste es auch gehen.
das sinnvollste ist immer noch das mit fstat zu machen. Das läuft unter jedem OS.
Gruß,
Marko
My systems:
AMD Athlon XP 1700MHz, 512MB RAM,Geforce 4200
AMD Duron 1300Mhz, 512MB
Jap, diese while != eof() schleife kenn ich, die funktioniert aber nur bei nicht-binären Dateien, das mit dem Filepointer klingt interessant, aber BEISPIELCODE! *g*
Man kann die Datei ja im Binär-Format öffnen, also mit rb und die Bytes einfach einlesen, ohne die wirklich zu verwenden, aber fstat ist wohl besser.
Der System-Call fstat() ist POSIX-spezifisch. Man kann's aber auch in reinem ANSI C hinbekommen.
--KaiCode:#include <stdio.h> #define FILENAME "/pfad/zur/datei" int main(int argc, char *argv[]) { FILE *fp; if ((fp = fopen(FILENAME, "rb")) != NULL) { if (fseek(fp, 0, SEEK_END) == 0) { long pos; if ((pos = ftell(fp)) != -1L) { printf("Dateigröße beträgt %lu Bytes.\n", pos); } else { perror(FILENAME); } } else { perror(FILENAME); } fclose(fp); } else { perror(FILENAME); } return 0; }
Lesezeichen