codice:
int confronta(char *email[], char  *parole[]){
     int conta=0;
     for(int i=0; email[i]; i++){
             for(int j=0; parole[j]; j++){       // parole[j], non parole[i]
        if(email[i] == parole[j])
        conta++;
        }
       }
return conta;      
}
Se c'era parole[i] il ciclo andava avanti all' infinito perchè inizialmente i è uguale a zero, ma nel for interno i non viene incrementato, per cui controlla sempre che parole[0] non sia NULL,e non si usciva mai dal ciclo.
E' indentato malissimo comunque.