Voglio suddividere una stringa in token in modo che se alcuni caratteri sono ripetuti, quella parte della stringa viene tagliata e messa in una stringa a parte.
Per chiarirmi faccio un esempio, ho la stringa "aaccbb", allora divido la stringa in 3 stringhe:
"aa" "bb" e "cc".
Per questo mi serve di avere un puntatore a puntatore di char (potrei anche avere tanti string ma lo sto risolvendo così),e allocare una nuova stringa ogni volta che la sequenza di caratteri uguali finisce.
Se uso questa funzione su di una stringa va in segmentation fault alla riga che ho segnato e non capisco il perchè.codice:char **getTokens(char *s, int *n) { unsigned int i=1,counter=1,j; char current=s[0]; char **temp; temp=new char *[100]; *n=0; while(i<strlen(s)) { if(current==s[i]) { i++; counter++; } else { cout <<*n <<endl; temp[*n]=new char[counter+1]; // segmentation fault for(j=i-counter;j<=i;j++) temp[*n][j]=s[j]; i++; counter=0; *n++; } } return temp; }
Io ho allocato il puntatore a puntatore, per sicurezza gli ho dato 100 elementi.
Se ogni elemento è un puntatore,quando dichiaro :
Non dovrebbe andare in segmentation fault perchè temp[0] è già stato allocato, qual'è il problema?codice:temp[0]=new char[counter+1];

Rispondi quotando