auslesen einer bmp datei



  • hi, ich versuche zu lernzwecken eine bmp datei auszulesen.
    das klappt ansich auch erstmal, nur wird nie die ganze datei eingelesen sondern wie es scheint immer nur der header(bin mir da nicht so sicher)

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    main(){
    	char buf, counter=0,i=0;
    	FILE *source,*outp;		
    
    	source=fopen("test2.bmp","rb");		//open source file 
    	outp=fopen("outp.bmp","w+");		//open output file
    	while((buf=fgetc(source))!=EOF){	//until fileend "EOF"
    		if(buf<0x10){			//visual appearance (terminal)
    			printf("0");		//
    		}				//
    		printf("%X ",buf);		
    		fputc(buf,outp);		//copy source byte to outp
    		i++;		
    		counter++;
    		if ((counter%=5)==0){		//visual appearance (terminal)
    			printf("\n"); 
    			counter=0;
    		}	
    	}
    	printf("\n");
    	return EXIT_SUCCESS;
    }
    

    der output sieht so aus:

    42 4D 3A 00 00 
    00 00 00 00 00 
    36 00 00 00 28 
    00 00 00 01 00 
    00 00 01 00 00 
    00 01 00 18 00 
    00 00 00 00 04 
    00 00 00 13 0B 
    00 00 13 0B 00 
    00 00 00 00 00 
    00 00 00 00 00
    

    der output eines hex editors der gleichen file sieht genauso aus plus das folgende:

    FF 00 00
    

    woran liegt das? 😕 wenn ich mein programm zwinge weiter zulesen kommt nur müll raus

    bei dem bild handelt es sich um eine 1px große bitmap file. die 3 character die der hex editor zusätzlich ausspuckt sind das eine pixel (blue,green,red) das meinem programm fehlt 😞



  • Ist da vielleicht auch schon ein EOF zeichen dazwischen?



  • die idee hatte ich auch 😕 aber wenn ich weiterlese kommt nur noch müll..

    und würde man ein EOF im hex editor nicht irgendwie sehen?



  • omg...problem gelöst <.>

    wie war das noch mit 0xFF und char? und getc und char äh int <_>



  • Wenn du im C++-Forum postest, solltest du auch C++-(File)streams einsetzen.
    Sonst ist dir im ANSI C-Forum eher geholfen.



  • Athar schrieb:

    Wenn du im C++-Forum postest, solltest du auch C++-(File)streams einsetzen.
    Sonst ist dir im ANSI C-Forum eher geholfen.

    als ob das das einzige wäre, was auf c schließen lässt 😉


Anmelden zum Antworten