Dateigroesse ermitteln



  • Moin Leute...ich hab eine Frage bezüglich Dateigrössen.
    Ich habe ein Programm geschrieben was eine File öffnet und zeichen für zeichen einliest und dann die groesse in Byte ausgibt...

    Im Quellcode habe ich die Datei bild.bmp geöffnet...
    ...mein Problem ist nun aber dass ich einmal eine .mpg videofile geöffnet habe und er einfach mitten in der datei aufgehört hat und bei einem bestimmten wert stehen geblieben ist. das wundert mich denn normalerweise müsste es ja bis feof laufen. ...woran liegts, weiss es jemand? 😞

    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    #include <string.h>
    
    void main()
    {
    float zaehler;
    int shit;
    
    FILE * Dateizeiger;
    Dateizeiger=fopen("bild.bmp","r");
    
    zaehler=0;
    
    while(!feof(Dateizeiger))
    {
    fscanf(Dateizeiger,"%c", &shit);
    zaehler++;
    }
    
    fclose(Dateizeiger);
    
    printf("Dateigroesse: %.2f", zaehler-1);
    
    getch();
    }
    


  • Dateizeiger=fopen("bild.bmp","rb");



  • Original erstellt von <mpg-öffner>:
    Dateizeiger=fopen("bild.bmp","rb**");**

    ein kleiner Nachtrag zur Erklärung: das b hinter dem r steht für das binäre öffnen der Datei ...



  • das brauch man nicht nachtragen da er das auch in der doku zu fopen nachlesen hätte können :o



  • @mpg-öffner: Ich hatte es ja nur gut gemeint ... 😞



  • Nur so mal als Anmerkung: Es ist ne schlechte Idee, die Dateigröße mit float zu messen. floats haben keine überragende Genauigkeit und können bei großen Dateien zu Problemen führen. Ich würde eher unsigned (long) empfehlen, was auch dem natürlichen Typ für Dateilänge deutlich näher kommt.



  • mpg-öffner lass doch den Angel in Frieden, ich kenne ihn persönlich und bin dankbar über jeden noch so kleinen Tipp. btw: Vielen dank für deine Lösung mit dem rb, da wäre ich von selbst nicht drauf gekommen 🙂


Anmelden zum Antworten