Conteo de palabras comunes de un archivo de texto en C++
Me han pedido un programa para contar las palabras comunes de un archivo de texto, pude contar el total de palabras, pero aún no he logrado encontrar como realizar el conteo de palabras comunes. Había pensado en hacerlo a través de estructuras, pero mis conocimientos de este tema es muy escaso, quería también hacerlo con una base de datos de mysql, sin embrago no he he encontrado información al respecto. ¿Podrían por favor guiarme para solucionar mi problema?
#include<stdio.h>
#include<string.h>
int main(void){
FILE *archivo, *archivo2;
char cadena[300];
char *res, *palabras;
char delimitadores[] = " \n\t.,(){}[]!?";
int conteo_palabras=0;
archivo=fopen("test.txt","r");
archivo2 = fopen("Analisis.txt","w");
if(archivo != NULL){
while((res = fgets(cadena,300,archivo)) != NULL){
printf("-%s-\n",cadena);
palabras = strtok(cadena,delimitadores);
if(palabras!=NULL){
printf("%s\n",palabras);
conteo_palabras++;
}
while((palabras = strtok(NULL,delimitadores)) != NULL){
printf("%s\n",palabras);
conteo_palabras++;
}
}
fclose(archivo);
}
else{
printf("Error de apertura\n");
return 1;
}
printf("\n\nEl numero de palabras es: %d\n",conteo_palabras);
fprintf(archivo2,"El numero de palabras es: %d\n",conteo_palabras);
fclose(archivo2);
return 0;
}