c recorre un diccionario

De hecho, es más fácil leer la línea completa con get y luego procesarla. El uso de getc aquí hace que el programa sea complejo y propenso a errores.

Dame un ejemplo para tu referencia, mira los comentarios e intenta entender:

# include & ltstdio.h & gt

# include & ltstring .h & gt

Estructura WORD_FOUND //Estructura utilizada para almacenar resultados.

{

char SZ palabra【256】;

int nCount

};

PALABRA _ ENCONTRADA g _ PALABRA ENCONTRADA【100】= { {"", 0 } };

int g _ n partido = 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<. /p>

mientras(tmp<end)

{

mientras(*tmp = =''| | *tmp = ='\n'| | *tmp = =' \t')tmp++; //Saltar espacios aquí

endChr = tmp

mientras (* end chr & amp; & amp*endChr!='\ n'& amp ;&*endChr!='\r'&&*endChr!="")end chr++;//Encuentra el siguiente espacio aquí

memset(SZ word, 0, sizeof(SZ word));

strncpy(SZ word, tmp, end chr-tmp); //Los caracteres encontrados se almacenan en szWord.

bool bFound = false

p>

for(I = 0;i<g_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&&strlen(SZ word)>0) //Si no hay coincidencias, almacena el carácter en g_WordFound.

{

strcpy(g_word encontrado【g_n match】.szWord,SZ word);

g_word encontrado【g_n match】 】.

ncount++;

g_n match++;

}

tmp = endChr

if (tmp & gt; = end) break

}

}

//Imprimir resultados aquí

for(I = 0;I<g_nMatchi++)

{

printf("% s = % d\n",g_palabra encontrada[I].szWord,g_palabra encontrada[I].nCount);

}

Devuelve 0;

}