Con fputs y fgets no he conseguido encontrar el error aqui esta mi propuesta a mi me funciona.
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *entrada;
FILE *salida;
char ent;
int i = 0;
entrada = fopen("crear.exe", "rb");
salida = fopen("nuevo.exe", "wb");
while(!feof(entrada)){
fread(&ent, 1,1,entrada);
fwrite(&ent, 1, 1, salida);
}
fclose(entrada);
fclose(salida);
}
Saludos