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?