c diccionario de gramática
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)); p>
strncpy(szWord, tmp, end chr-tmp); //Los caracteres encontrados se almacenan en szWord.
bool bFound = false
for(I = 0). ; i. & ltg _ nMatchI++)//Encontrar 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;
}