First:
When i compile my code, i got this error:
principal.c: In function ‘obtienepalabra’:
principal.c:60: warning: assignment makes integer from pointer without a cast
Why i get this?
And Second, in this part of code
palabra = obtienepalabra() ;
printf("%s", palabra);
I call a function called obtienepalabra() and this return a word from a local dictionary, i save it into a variable called palabra type int, i need to make this...
palabra = "hola"
and covert into this:
palabra2 = [ "h", "o", "l", "a" ].
I need to get this array to continue with my program, but i'm stuck on it.
Thanks for the help.
Here is all code:
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
void creardiccionario() {
/* Funcion encargada de crear un diccionario local de palabras con 20 palabras de ejemplo" */
/* Estructura de fichero */
FILE *creadorfichero;
/* Array constante con las palabras a guardar */
char const *diccejemplo[] = {"hola", "mundo", "señor", "camisa", "chaleco", "muerte", "casa", "instinto", "explicar", "romper", "comprar", "barrera", "animales", "perro", "gato", "asunto", "fecha", "emisor", "receptor", "carta"};
creadorfichero = fopen("diccionariolocal.txt", "w"); /* Abrimos un fichero en modo "crear" */
int i; /* Variable para el bucle */
for (i=0; i<20; i++) { /* Bucle con el cual escribimos las palabras dentro del fichero */
fprintf(creadorfichero,"%s\n",diccejemplo[i]);
};
fclose(creadorfichero); /*Cerramos el fichero */
}
int obtienepalabra() {
/* Funcion encargada de obtener la palabra para poder jugar, desde el fichero de texto */
FILE *dicclocal;
char bufferpalabras[10000];
int cantidad = 0;
int cantidadvalida = 0;
int cantidadaverigua;
int salida;
int aleatorio;
int continuar = 0;
dicclocal= fopen("diccionariolocal.txt", "r");
while ((fscanf(dicclocal,"%s",bufferpalabras)) != EOF) {
cantidad++;
if ((strlen(bufferpalabras) <= 8) & (strlen(bufferpalabras) >= 4)) {
cantidadvalida++;
}
}
printf("Cantidad de Palabras en el fichero: %d\n", cantidad);
printf("Cantidad de Palabras utilizables: %d\n", cantidadvalida);
fclose(dicclocal);
if (cantidadvalida == 0) {
printf("----------------------------------------------------------------------------------------------------------\n");
printf("| Parece que el fichero de Almacenamiento de palabras no contiene una palabra valida para jugar |\n");
printf("| crearemos uno automaticamente. |\n");
printf("| El fichero se llama diccionariolocal.txt, ubicado en la misma carpeta que el ejecutable del juego. |\n");
printf("| Podra añadir sus propias palabras, hasta un maximo de 10000 palabras, pero solo se tendran en cuenta |\n");
printf("| aquellas palabras que sean de 4 a 8 letras, disfrute del video juego. |\n");
printf("----------------------------------------------------------------------------------------------------------\n");
creardiccionario();
}
while (continuar == 0) {
aleatorio = rand() % cantidad;
cantidadaverigua = 0;
dicclocal= fopen("diccionariolocal.txt", "r");
while ((fscanf(dicclocal,"%s",bufferpalabras)) != EOF) {
if ((cantidadaverigua + 1) == aleatorio) {
if ((strlen(bufferpalabras) <= 8) & (strlen(bufferpalabras) >= 4)) {
salida = bufferpalabras;
return(salida);
continuar = 1;
}
}
cantidadaverigua++;
}
fclose(dicclocal);
}
}
int main() {
int cantidad; /* Variable local para bucles*/
char bufferpalabras[10000]; /* Buffer para analizar palabras */
char caracteresdepalabras[8];
char opciones; /* Variable para detectar opciones del menu principal */
int palabra; /* Variable para almacenar la palabra en juego */
FILE *palabraslocales; /* Estructura de fichero para detectar la existencia */
system("clear"); /* Limpiar pantalla */
printf("***************************************************\n"); /* Presentacion del programa */
printf("**** Bienvenido al Juego del Ahorcado ****\n");
printf("***************************************************\n");
opciones = 0; /* Inicializamos la variable a "0" */
while (opciones == 0) { /* El bucle se ejecuta hasta recibir la opcion esperada, es el menu principal */
printf("\n\nPor favor seleccione una opcion:\n\n"); /* Muestra las opciones del menu */
printf("(1) Un jugador\n");
printf("(2) Dos jugadores\n");
printf("(3) Salir\n");
scanf("%s", &opciones); /* Captura la entrada del usuario y lo guarda en la variable opciones */
switch(opciones){ /* Segun el valor de opciones ejecuta distintas acciones */
case '1': /* Si opciones vale "1" */
printf("Ha seleccionado un jugador:\n");
/* Si al abrir el fichero, este no existe, muestra un mensaje en pantalla y llama a la funcion de creardiccionario */
if ((palabraslocales = fopen("diccionariolocal.txt", "r")) == NULL) {
printf("----------------------------------------------------------------------------------------------------------\n");
printf("| Parece que el fichero de Almacenamiento de palabras no existe, crearemos uno automaticamente. |\n");
printf("| El fichero se llama diccionariolocal.txt, ubicado en la misma carpeta que el ejecutable del juego. |\n");
printf("| Podra añadir sus propias palabras, hasta un maximo de 10000 palabras, pero solo se tendran en cuenta |\n");
printf("| aquellas palabras que sean de 4 a 8 letras, disfrute del video juego. |\n");
printf("----------------------------------------------------------------------------------------------------------\n");
creardiccionario();
}
/* Despues de mirar la condicion anterior, si al abrir el fichero no devuelve un error, analiza la cantidad
* de datos dentro de este, si no existen, muestra un mensaje en pantalla y llama a la funcion creardiccionario */
if ((palabraslocales = fopen("diccionariolocal.txt", "r")) != NULL) {
cantidad = 0;
while ((fscanf(palabraslocales,"%s",bufferpalabras)) != EOF) {
cantidad++;
}
if (cantidad == 0) {
printf("----------------------------------------------------------------------------------------------------------\n");
printf("| Parece que el fichero de Almacenamiento de palabras esta vacio, crearemos uno automaticamente. |\n");
printf("| El fichero se llama diccionariolocal.txt, ubicado en la misma carpeta que el ejecutable del juego. |\n");
printf("| Podra añadir sus propias palabras, hasta un maximo de 10000 palabras, pero solo se tendran en cuenta |\n");
printf("| aquellas palabras que sean de 4 a 8 letras, disfrute del video juego. |\n");
printf("----------------------------------------------------------------------------------------------------------\n");
fclose(palabraslocales);
creardiccionario();
}
/* Una vez creado el diccionario, llama a la funcion obtienepalabra */
palabra = obtienepalabra();
printf("%s\n", palabra);
break;
} else {
/* Si la condicion de que analizar el fichero devuelve que este no esta vacio, llama a obtiene palabra */
palabra = obtienepalabra();
printf("%s", palabra);
}
case '2': /* Si opciones vale "2" */
printf("Ha seleccionado dos jugadores:\n");
break;
case '3': /* Si opciones vale "3", limpia la pantalla y muestra mensaje de Despedida */
system("clear");
printf("*********************************************************\n");
printf("**** Gracias por usar el Juego del Ahorcado ****\n");
printf("*********************************************************\n");
return 0;
break;
default: /* Si opciones no coincide con ningun caso, muestra error y vuelve a enseñar el menu, reiniciando la variable opciones a 0*/
printf("La opcion seleccionada no es correcta\n");
opciones = 0;
}
}
}

New Topic/Question
Reply



MultiQuote





|