codice:
void explode(char **str) {
    int elem = 0, i = 0, i2 = 0;
    char *prova = "-1,-1,2,3,5,6,7,8,9";
    char *tmp = NULL;
    char **ret = NULL;

    for (; i < strlen(prova); i++) {
        if (tmp != NULL) {
            tmp = (char *)realloc(tmp, (strlen(tmp) + 1) * sizeof(char));
        } else {
            tmp = (char *)malloc(1 * sizeof(char));
        }
        
        tmp[i] = *(prova+i);
        
        /*printf("\nsize: %ld\n", strlen(tmp));
        printf("\ntmp: %s\n", tmp);*/
               
        if (*(prova+i) == ',') {
            elem += 1;

            if (ret == NULL) {
                ret = (char **)malloc(elem * sizeof(char));
            } else {
                ret = (char **)realloc(ret, (strlen(*ret) + 1) * elem * sizeof(char));
            }
            
            ret[elem -1] = (char *)malloc(strlen(tmp) * sizeof(char));
            
            for (; i2 < (strlen(tmp)-1); i2++) {
                strcpy(ret[elem - 1], tmp[i2]);
                
            }
            
            free(tmp);
            tmp = NULL;
            
        }
    }
    
    free(tmp);
    
    printf("\nElementi: %d\n", (elem+1));
Vorrei replicare la funzione explode di PHP o split di Python/JS per scopo didattico (senza strtok grazie).

2 quesiti:
- Lo "strcpy" non mi funziona. Perchè?
- Oltretutto come posso poi ritornare l'array dopo aver deallocato la memoria con free a ret?