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