Recuento de soluciones del diccionario
Dame un ejemplo para tu referencia, mira los comentarios e intenta entender:
# include ltstdio.h gt
# include ltstring.h gt
p>Estructura WORD_FOUND //Estructura utilizada para almacenar resultados.
{
char SZ palabra【256】;
int nCount
};
PALABRA _ ENCONTRADA g _ PALABRA ENCONTRADA【100】= { {"", 0 } };
int g _ n match = 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 (SZ text, sizeof (SZ text) -1, FP) // Lea la línea completa aquí, lo cual es más eficiente. y no es fácil.
{
char *tmp=szText, * end = SZ text strlen(SZ text);
char * endChr
mientras(tmp lt; fin)
{
mientras(*tmp = =''| | *tmp = ='\n'| | *tmp = ='\t ') tmp;//Omitir espacios aquí
endChr = tmp
mientras (* end chr amp; amp*endChr!='\n' amp; amp* endChr! ='\r' amp; amp*endChr!=""")end chr; //Encuentra el siguiente espacio aquí
memset(SZ word, 0, sizeof(SZ word)); p>
strncpy(SZ word, tmp, end chr-tmp); //Los caracteres encontrados se almacenan en szWord.
bool bFound = false
for(I =. 0; iltg_nMatchi) //Encuentra el carácter encontrado
{
if (strcmp(g_word found[I]. szword, SZ word == 0) //Si coincide,
{
g _ palabra encontrada【I】. ncount; //Agregar 1
bEncontrado = true
Romper;
}
}
Si ( ! b fund amp ampstrlen (palabra SZ) gt; 0) // Si no hay coincidencia, almacena el carácter en g_WordFound.
{
strcpy(g_word encontrada【g_n coincidencia】.
szWord, palabra SZ);
g _ palabra encontrada【g _ n coincidencia】. ncount;
g_n coincidencia;
}
tmp = endChr
if (tmp gt; = end) break;
}
}
//Imprime los resultados aquí
for(I = 0; I ltg _ nMatchi)
{
printf("s=d\n",g_palabra encontrada[I].szWord,g_palabra encontrada[I].nCount);
}
Devuelve 0;
}