1)Apri PAINT e crea/salva un file di nome "origine.bmp"

2)ORA da C/C++, devi aprire il file origine.bmp in modalità binaria... (non ascii)

Questa routine C, legge il tuo file bitmap (chiamato "origine.bmp")
e crea un file C/C++ (eseguibile.cpp) pronto per essere compilato in EXE e distribuito. Questo ultimo conterra l'array con il codice decimale per creare la bitmap (identica a quella mappata dal primo programma (che non è altro che un "caricatore").

codice:
#include <stdio.h>
#include <stdlib.h> 

int main()
{
    FILE *in, *out;
    int i=0, j=0;
    
    out = fopen("./origine.bmp", "rb");
    in = fopen("./eseguibile.cpp", "wb");

    //creo/scrivo il file eseguibile.cpp
    fprintf(in, "#include <stdio.h>\n");
    fprintf(in, "#include <stdlib.h>\n\n");
    fprintf(in, "int main(){\n");
    fprintf(in, "int i;\n");
    fprintf(in, "FILE *p;\n");
    fprintf(in, "int bmp[]={");
    
    //creo l'array contenente il codice decimale della bitmap di origine
    while(!feof(out))
    {
        fread(&i, sizeof(char), 1, out);
        fprintf(in, "%d, ", i);
        j++;
    }
   
    fseek(in, -2, 1);

    fprintf(in, "};\n");
    
    //continuo a scrivere il listato per il secondo eseguibile  
    fprintf(in, "p = fopen(\"./bitmap.bmp\", \"wb\");\n");
    fprintf(in, "for(i=0; i<%d; i++) fprintf(p, \"%%c\", bmp[i]);\n", j); 
    fprintf(in, "fclose(p);\n");
    fprintf(in, "printf(\"Bitmap creata\\n\");\n");
    fprintf(in, "system(\"start bitmap.bmp\");\n");
    fprintf(in, "system(\"pause\");\n");
    fprintf(in, "return 0;\n");
    fprintf(in, "}\n");

    // ora chiudo la routine in questo file "caricatore"
    fclose(in);
    fclose(out);
  
    printf("TOT. BYTE: %d\n", --j);
    system("PAUSE"); 
    
    return 0;
}
p.s. se modifichi l'estensione (es: JPG , WAV , ecc)
funziona anche con altri formati.

Ora distribuisci soltanto il file ESEGUIBILE.EXE