Gracias amigo, ese era el problema, ya va perfecto. Ahora intento otra cosa. Ya que ya obtengo siempre una combinacion valida, La idea es volcar el archivo de cuatro letras a la memoria y barajar las palabras, luego empiezo leyendo desde la primera en la lista hasta llegar al final de la lista y si no sirve ninguna de cuatro para crear una combinacion sale. El problema lo tengo con esto:
Código C:
Ver original#define SIZE 10
...
...
char *lista[SIZE];
int nPalabras;
ObtenerListaInicial("4_Letras.txt",lista,&nPalabras);
...
...
int ObtenerListaInicial(char *nameFile,char *palabra[SIZE],int *nElementos)
{
int i=0,retval,posPalabra;
FILE *archivo;
archivo
=fopen(nameFile
,"rb"); if(archivo != NULL){
fseek(archivo
,0,SEEK_END
); *nElementos
=ftell(archivo
)/SIZE
; palabra
=malloc(*nElementos
*sizeof(char*)); if(palabra != NULL){
fseek(archivo
,0,SEEK_SET
); do{
retval
=fread(palabra
[i
],SIZE
,1,archivo
); if(retval != 1)
break;
i++;
}
}else{
retval=-1;
}
return retval;
}
El problema que tengo es con el modo de reservar la memoria y luego escribir en ella. Se que lo estoy haciendo mal porque da una excepcion al intentar escribir en NULL pero no se como hacerlo bien.