ho risolto!!

avevo dimenticato di allocare lo spazio per le stringhe all'interno del vettore (allocavo solo lo spazio per il puntatore).
comunque ho aggiunto questa riga
codice:
v[index] = (char*)calloc(strlen(sTemp),sizeof(char));
quindi la funzione completa è questa
codice:
char** scompatta(char *buffer,char *delimiters) {
char *sTemp;
char *sBuffer;
int index = 0;
char **v;
sBuffer = strdup(buffer);
//utilizzo la funzione strtok che restituisce la stringa fino al delimitatore
sTemp = (char*)strtok(sBuffer,delimiters);
v = (char**)malloc(sizeof(char*));
v[index] = (char*)calloc(strlen(sTemp),sizeof(char));
strcpy(v[index],sTemp);
index++;
//passo a strtok NULL come primo parametro così parsa la stringa che ha in "memoria"
while((sTemp = (char*)strtok(NULL,delimiters)) != NULL) {
v = (char**)realloc(v,(index+1)*sizeof(char*));
v[index] = (char*)calloc(strlen(sTemp),sizeof(char));
strcpy(v[index],sTemp);
index++;
}
v = (char**)realloc(v,(index+1)*sizeof(char*));
v[index] = NULL;
free(sBuffer);
return v;
}
ho anche aggiunto una funzione per liberare lo spazio usato dal vettore perchè altrimenti rimarrebbe allocato in memoria
codice:
void freeVett(char** v) {
int k;
for(k=0;v[k]!=NULL;k++)
free(v[k]);
free(v);
}
questa funzione deve essere richiamata quando il vettore non serve più (e prima della fine del programma
)