none
fscanf ließt nur Anfang von Datenstream aus RRS feed

  • Frage

  • Hallo zusammen,

    ich habe noch relativ wenig Erfahrung mit C und möchte ein Programm schreiben, das eine Bitmapdatei ausließt (100x150Pixel 24bit-Farben), die Pixel mit einem Filterbild neu berechnet und in einer neuen Bitmapdatei speichert.

    Die Bitmapdatei habe ich so geöffnet und ausgelesen:

    FILE *datei;
    BYTE byBild[45054];
    
    
    datei=fopen(cDateiname,"r");
    
    fscanf(datei,"%45054c",&byBild);



    Beim Debuggen habe ich herausgefunden, dass die ersten Bytes noch ordnungsgemäß ausgelesen werden, aber ab 'byBild[448]', also dem 448. Byte wird nur noch der int Wert 204 ausgelesen. Laut Hex-Editor ist die Bilddatei aber auch an dieser Stelle OK und hat eindeutige Werte von 0-255.

    Als Ergebnis bekomme ich also eine hellgraue Bitmapdatei, in der unten ein paar Pixelreihen zu sehnen sind.

    Woran könnte es liegen, dass der Dateistream nicht komplett ausgelesen wird? Sollte ich vieleicht eine andere Methode nehmen, um ihn auszulesen? Ich weiß echt nicht woran es liegen kann, vorallem da es mit manchen Bitmapdateien funktioniert.

    Falls ihr mehr Informationen braucht sagt es nur. Ich antworte so schnell ich kann.

    Gruß Chris
    Dienstag, 5. März 2013 23:32

Antworten

  • Ich habe das Problem gelöst.

    Ich habe die Datei jetzt anders ausgelesen:

    fread(byBild,45054,1,datei);

    Seit dem ließt er die ganze Datei aus.

    Gruß Chris

    • Als Antwort markiert DerChris88 Mittwoch, 6. März 2013 00:48
    Mittwoch, 6. März 2013 00:48

Alle Antworten

  • Ich habe das Problem gelöst.

    Ich habe die Datei jetzt anders ausgelesen:

    fread(byBild,45054,1,datei);

    Seit dem ließt er die ganze Datei aus.

    Gruß Chris

    • Als Antwort markiert DerChris88 Mittwoch, 6. März 2013 00:48
    Mittwoch, 6. März 2013 00:48
  • fscanf ist nicht für das lesen von Bytes gedacht sondern für das Parsen von Strings!


    Jochen Kalmbach (MVP VC++)
    Mittwoch, 6. März 2013 09:49
  • Hi Jochen,

    danke für die Antwort. Also ist fread() für das ganze Vorhaben passender oder würdest du mir zu was ganz Anderem raten?

    Gruß Chris

    Mittwoch, 6. März 2013 11:24