Problema gioco dell'impiccato

di il
3 risposte

Problema gioco dell'impiccato

Salve ho un problema con un programma che dovrebbe simulare il gioco dell'impiccato.
Il programma da me scritto vede la scanf un ciclo si e un ciclo no, e non capisco perche.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
 char *parola;
 char *tentativo;
 char tent;
 int i,j,n,x=0;
 
 printf("Inserisci lunghezza vettore: ");
 scanf("%d",&n); 
 parola=(char*)calloc(n,sizeof(char));
 tentativo=(char*)calloc(n+1,sizeof(char));
 
 printf("Inserisci parola segreta: ");
 scanf("%s",parola);
 
 for(i=0;i<n;i++)
 {
  tentativo[i]='_';
 }
 tentativo[n]='\0';
 for(i=1;i<=10;i++)
 {
  printf("Inserisci lettera tentativo numero %d: \n",i);
  scanf("%c",&tent);
  for(j=0;j<n;j++)
  {
   if(tent==parola[j]) 
   {
    tentativo[j]=tent;  
    x=1;
   }
  }
  if(x==1) printf("Indovinato! La parola e' %s\n",tentativo);
  else printf("Errato! La parola e' %s\n",tentativo);
  x=0;
  if(strcmp(tentativo,parola)==0) 
  {
   printf("Hai vinto!");
   break;
  }
 if(i==10) printf("\nHai perso!");
 }
}
Il compilatore stampa "Inserisci lettera tentativo numero 1:"
"Errato! La parola e' ______"
"Inserisci lettera tentativo numero 2:.."
In pratica salta a priori il primo tentativo, e non so a cosa sia dovuto

3 Risposte

  • Re: Problema gioco dell'impiccato

    Basta inserire un fflush(stdin) (pulitura del buffer).
    
    fflush(stdin);
    printf("Inserisci lettera tentativo numero %d: \n",i);
    scanf("%c",&tent);
    
    In questo modo sei sicuro che il tutto funzioni
  • Re: Problema gioco dell'impiccato

    In effetti così funziona
    A cosa era dovuto dunque l'errore? In futuro, quando si deve usare tale funzione? (Non l'avevo mai sentita nominare)
  • Re: Problema gioco dell'impiccato

    Infatti non va usata su stream di input. Serve per gli stream di output.

    Meglio usare un ciclo while col getchar()
    while(!(getchar() == '\n'));
Devi accedere o registrarti per scrivere nel forum
3 risposte