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.
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;
}
Se uso questa funzione su di una stringa va in segmentation fault alla riga che ho segnato e non capisco il perchè.
Io ho allocato il puntatore a puntatore, per sicurezza gli ho dato 100 elementi.
Se ogni elemento è un puntatore,quando dichiaro :
codice:
temp[0]=new char[counter+1];
Non dovrebbe andare in segmentation fault perchè temp[0] è già stato allocato, qual'è il problema?