El lenguaje C calcula las cinco palabras principales que aparecen con más frecuencia en un artículo en inglés y las genera en el orden del diccionario de inglés.
Te daré un ejemplo para tu referencia, echa un vistazo a las notas e intenta entender:
# include & ltstdio.h & gt
# include & ltstring.h & gt
Struct WORD_FOUND //Estructura utilizada para almacenar resultados.
{
char SZ palabra[256];
int nCount
};
PALABRA _ ENCONTRADA g _ PALABRA ENCONTRADA [100] = { { " ", 0 } }
int g _ n coincidencia = 0
int main()
{
char SZ texto[1024];
char SZ palabra[512];
ARCHIVO * fp
int I;
If ((FP = fopen ("case 1. in "," r ")== null)//Abre el archivo.
{printf("Error"); return 1 ;}// Genera un error si no se puede abrir
While (fgets (sztext, sizeof (sztext)-1, FP))// Lea la línea completa aquí, que es más efectivo y menos propenso a errores
p>{
char *tmp=szText, * end = SZ text+strlen(SZ text);
char * endChr.
mientras( tmp & lt; fin)
{
mientras(* tmp = = ' ' | | * tmp = = ' \ n ' | | * tmp = = ' \ t ') tmp++; //Saltar espacios aquí
endChr = tmp
while(* end chr & amp;& amp*endChr!= '\n ' & amp& amp*endChr! = ' \ r ' & amp& amp*endChr! = ' ')end chr++ //Encuentra el siguiente espacio aquí
memset(szWord, 0, sizeof(SZ word) );
strncpy(szWord, tmp, end chr-tmp); //Los caracteres encontrados se almacenan en szWord
bool bFound = false
for. (I = 0; i. & ltg _ nMatchI++)//Encuentra el carácter encontrado
{
If (strcmp (g _ wordfound [i].szword, SZ word) = = 0)//Si coincide,
{
g_WordFound[i]. ncount++; //Agregar 1
bEncontrado = true
Romper;
}
}
Si ( ! Encontrado y encontrado. & ampstrlen(szWord)>0) //Si no hay coincidencia, almacena el carácter en g_WordFound.
{
strcpy(g_WordFound[g_nMatch]). szWord, palabra SZ);
g_WordFound[g_nMatch].
ncount++;
g _ n match++;
}
tmp = endChr
if(tmp & gt; = end)break;
}
}
//Imprimir resultados aquí
for(I = 0;I<g_nMatchi++) p>
{
printf("%s = %d\n ", g_WordFound[i]. szWord, g_WordFound[i]. nCount
} p>
); Devuelve 0;
}