Vorrei replicare la funzione explode di PHP o split di Python/JS per scopo didattico (senza strtok grazie).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));
2 quesiti:
- Lo "strcpy" non mi funziona. Perchè?
- Oltretutto come posso poi ritornare l'array dopo aver deallocato la memoria con free a ret?

Rispondi quotando