Date 2 frasi.. vorrei contare quante parole della frase 1 siano presenti all'interno della frase 2..(attenzione...parole e non lettere). Le parole all'interno della frase possono essere separate da spazio, trattino o virgola.

Ho pensato di usare la funzione string strtok() che separa ogni parola dalla frase e le memorizza in un array.. Questo per ognuna delle due frasi
Il problema è che ad esempio la frase: "ciao come stai"...dovrebbe memorizzarla all'interno dell'array cosi: ciao alla posizione 0, come alla posizione 1, stai alla posizione 2.. e non lettera per lettera..altrimenti non va a vedere le parole uguali..ma mi conta ogni singola lettera.

Il mio codice non funzionante... ma che compila:
codice:
#include <iostream>
using namespace std;

void separaparole(char frase [], char array[]){
     char *s=strtok(frase, " ");
     int i=0;
     while(s!=NULL){
                    array[i]=*s;
                    i++;
                    s=strtok(NULL, " ");
                    }
}

int controlla(char parole1[], char parole2[]){
    int conta=0;
    for(int i=0; i<strlen(parole1); i++){
            for(int k=0; k<strlen(parole2); k++){
                    if(parole1[i] == parole2[k])
                    conta++;
                    }
             }
    }              
int main(){
 char fraseA[]={"ciao come stai"};
 char fraseB[]={"ciao io bene"};
 char arrayA[50], arrayB[50];
 
 separaparole(fraseA, arrayA);
 separaparole(fraseB, arrayB);
 
 cout<<controlla(arrayA, arrayB);

system("pause");
return 0;
}