Tu avevi scritto questo:
codice:
char *decode(char *code[], char *bs)
{
    int i=4,j=0;
    char *punta,*appo;
    appo=punta;
    for (j=0; j<i; j++) //per caricare appo
    {
        appo= (char *)malloc(sizeof(char));
        *appo=*bs;
        bs++;
        appo++;
    }
    appo=punta;
    j=0;
while(*(appo+j) != 0) {
        printf("%c",*(appo+j));
        ++j;
    }
}
e questo io ho commentato.
Se intendevi quello che hai scritto adesso, perché non l'hai scritto prima?