Juego del ahorcado! C

Iniciado por kuhi, 21 Abril 2017, 18:34 PM

0 Miembros y 1 Visitante están viendo este tema.

kuhi

Hola! Estoy haciendo el trabajo final de Introducción a la programación en C, me piden hacer el juego del ahorcado.
Me sale un problema, que no caigo en que puedo estar fallando, simplemente hago un gets() para almacenar una cadena de caracteres y se salta la fase de entrada de datos. No me permite darle la cadena de datos, se salta completamente esa parte.
Hay algo que hago mal y no me estoy dando cuenta, y debe ser algo muy muy básico.
He probado hacer el gets con la variable string y con la variable palabra, no me ha funcionado ninguna.

Pido por favor que no me adelanten más de lo que pido, quiero hacer el trabajo yo aprendiendo, solo quiero consultar y aclarar las dudas puntuales, porque hay gente con buena voluntad que igual quiere decirme más cosas de la cuenta y eso no me ayudaría a aprender.
Saludos y muchas gracias!

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MIN 4 // longitud minima palabra
#define MAX 8 // longitud maxima palabra
#define OPORTUNIDADES 7 // nr de oportunidades por partida

int jugadores[30][2]; // jugadores[x][y] nr de jugador y puntos del jugador
int njugadores; // nr de jugadores que participan
char palabra;
char string[8];
void playstring();
void banner();
int bienvenida();

int main()
{
banner(); // muestra un bonito dibujo del juego
system("cls");
system("color EC");
bienvenida(); // da la bienvenida al juego y almacena el numero de jugadores
printf("Indique una palabra de 4-8 letras:\n");
gets(string);
//strcpy(string,palabra);
//playstring();
}
El conocimiento no ocupa lugar, somos libres de saber cuánto queramos...

Fedex15

#1
Mira, con char palabra te va a tirar error porque es un char, no es una cadena.

Acordate que gets() es una funcion peligrosa, si le pasas una cadena de mayor tamaño que la memoria reservada sigue escribiendo en otras partes de la memoria, lo que podria probocar algun segmentation fault.

Acordate que gets es es :

Char* gets (char* _s). Recibe un puntero a char y devuelve un puntero a char.

Cual es el error que te esta tirando, es de compilacion o cuando ejecutas el programa?.

MAFUS

Introducción a la programación...
¿Te han hablado del buffer de entrada y como trabajan las funciones de adquisición de datos por teclado?
El problema es que cuando pides esos datos el buffer de entrada todavía tiene cosas dentro, y entre esas cosas está el carácter de nueva línea, que hace que la función se detenga y guarde el contenido que ha capturado. Por parte del usuario lo único que ve es que el programa se salta la entrada de datos.

Cuando captures una entrada por teclado asegúrate de vaciar el buffer después. Hay varias técnicas. Cómo es un proyecto de fin de asignatura te invito a que los indagues.

kuhi

Muchas gracias!! <3 con fflush(stdin) solucionado!
No había caído, gracias!!!
El conocimiento no ocupa lugar, somos libres de saber cuánto queramos...