salve,
so che il titolo è un pò misterioso e la strtok() e eval() non hanno niente in comune, ma sono i problemi principali del mio programma.
[list=1][*]strtok()
ho scritto una funzione che presi in imput una stringa e i delimitatori scompatta la stringa data in un vettore di stringhe e ne ritorna il puntatore.
codice:
char** scompatta(char *buffer,char *delimiters) {
char *sTemp;
int index = 0;
char **v;
//utilizzo la funzione strtok che restituisce la stringa fino al delimitatore
sTemp = (char*)strtok(buffer,delimiters);
v = (char**)malloc(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*));
strcpy(v[index],sTemp);
index++;
}
return v;
}
il problema è che dopo averla eseguita correttamente il programma crasha.
il main è il seguente
codice:
int main(void) {
char **v;
char str[] = "dim=2";
v = scompatta(str,"=");
printf("\n'%s' = '%s'",v[0],v[1]);
return 0;
}
la stampa viene fatta correttamente ma dopo crasha...sapete spiegarmi il perchè?
[*]eval()
stavo cercando una funzione tipo eval() di PHP che dovrebbe valutare una stringa ed eseguirla come se fosse codice. questo mi risparmierebbe il processo di scompattamento della stringa in quanto le stringhe da me utilizzate fanno riferimento ad assegnamenti a variabili.
codice:
char str[] = "dim=2";
int dim;
eval(str);
printf("dim = %d",dim);
se esistesse qualcosa di simile sarebbe molto comodo(oppure qualche dritta sull'implementazione)[/list=1]