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?