Y tercera y ultima parte:
Código C:
Ver original//-----------------------------------------------------------------------------
//Busca las palabras de length caracteres en la lista de palabras y las guarda en
//la estructura indicada
int SearchNextWords(char *word,int length,ListaPalabras *Lista)
{
char cadena[SIZE],salida[SIZE];
char nameFile[13]={0};
char aux;
int a,i,contador,retval;
FILE *archivo;
sprintf(nameFile
,"%i_Letras.txt",length
+1); archivo
=fopen(nameFile
,"r");
if(archivo != NULL){
if(Lista->nEncontradas !=0){
Lista->Palabras=NULL;
Lista->nEncontradas=0;
}
do{
retval
=fread(cadena
,SIZE
,1,archivo
); contador=length;
for(a=0;a<length;a++){
for(i=0;i<=contador;i++){
if(word[a]==cadena[i])
{
aux=cadena[i];
cadena[i]=cadena[contador];
cadena[contador]=aux;
contador--;
break;
}
}
}
if(contador==0){
Lista->nEncontradas++;
Lista
->Palabras
= realloc(Lista
->Palabras
,Lista
->nEncontradas
*sizeof(Palabra
)); strcpy(Lista
->Palabras
[Lista
->nEncontradas
-1].
Palabra,salida
); Lista
->Palabras
[Lista
->nEncontradas
-1].
PosCaracterExtra=(int)strchr(Lista
->Palabras
[Lista
->nEncontradas
-1].
Palabra,cadena
[0])-(int)Lista
->Palabras
[Lista
->nEncontradas
-1].
Palabra; }
retval=Lista->nEncontradas;
}else{
retval=-1;
}
return retval;
}
//-----------------------------------------------------------------------------
//Elije una palabra al azar del archivo elegido
int SearchFirstWord(char *nameFile,char *word)
{
int retval,nPalabras,posPalabra;
FILE *archivo;
char palabra[SIZE];
archivo
=fopen(nameFile
,"r"); if(archivo != NULL){
fseek(archivo
,0,SEEK_END
); nPalabras
=ftell(archivo
)/SIZE
; posPalabra
=rand()%nPalabras
; fseek(archivo
,posPalabra
*SIZE
,SEEK_SET
); retval
=fread(palabra
,SIZE
,1,archivo
); if(retval==1)
}else{
retval=-1;
}
return retval;
}