Buona sera ragazzi, avrei bisogno di capire come mai questo semplice programma non mi funziona , allora spiego brevemente , io voglio prendere da un array presente nel main un tot di caratteri e metterli in un nuovo spazio per l'appunto appo, poi vorrei riaggiornare il valore a cui punta appo per vedere cosa stampa insomma per vedere se ha caricato correttamente quei 4 valori. Vi ringrazio in anticipo per ogni aiuto.
codice:

int main()
{
    char prova[200];
    char *code[]= {"0","10","11000","11001","110100000",
                   "110100001","110100010","110100011",
                   "110100100","110100101","110100110",
                   "110100111","110101000","110101001",
                   "110101010","110101011","110101100",
                   "111","110101101","110101111","110110000",
                   "110110001","110110010","110110011",
                   "110110100","110110101"
                  };
    char bs[] = {"0101110110000110010101110"};
    decode(code,bs);
}

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;
    }
}

mille grazie per ogni aiuto