A dir la verità non cambia quasi per niente in quanto mi ero concentro nel far funzionare la funzione, però in linea di massima dovrebbe essere:
codice:#include <string.h> #include <stdio.h> #include <stdlib.h> char** explode(char sep, char *prova); int main (void) { char **new; new = explode(',', "-1,-1,2,3,5,6,7,8,9"); return 0; } char** explode(char sep, char *prova) { 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); if (*(prova+i) == sep) { 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)); return ret; }

Rispondi quotando