我的程序在扫描完成之前启动循环

时间:2013-10-10 18:52:02

标签: c loops asynchronous

我有一点问题,我的程序运行良好,直到它到达最后一步,scanf要求继续循环。问题是此扫描不起作用,但以下系统(“cls”)有效。异步时看起来像javascript。

这是代码。

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

int main(int argc, char *argv[])
{
  char elegir_dificultad;
  int dificil = 1;

  printf("Desea que se le indique si el numero es menor o mayor? \n s/n \n");
  scanf("%c",&elegir_dificultad);
  if(elegir_dificultad == 's'){
      dificil = 0;
  }
  while(1){
      int aleatorio, cont, introducido;
      cont = 1;
      aleatorio = rand()%101;
      printf("%d",aleatorio);
      int fallo = 1;
      while(fallo){
          printf("Introduce el numero, intento numero %d \n", cont);
          scanf("%d",&introducido);
          if(introducido == aleatorio){
                  fallo = 0;
          }
          if(cont == 10){
                  break;
          }
          if(!dificil){
              if(introducido < aleatorio){
                  printf("El numero introducido es menor que el aleatorio \n");
              }
              if(introducido > aleatorio){
                  printf("El numero introducido es mayor que el aleatorio \n");
              }                 
          }
          if(fallo){
          cont++;
          }
      }
      char continuar;
      if(fallo){
         printf("Has perdido... el numero era %d \n Quieres repetirlo? s/n \n",aleatorio);
         scanf("%c",&continuar); 
         if(continuar=='n'){
               break;              
         }     
         system("cls"); 
      }else{
         printf("°Has ganado! el numero era %d \n Quieres repetirlo? s/n \n",aleatorio);  
         scanf("%c",&continuar); 
         if(continuar=='n'){
               break;              
         }     
         system("cls");   
      }
  }

  system("PAUSE");  
  return 0;
}

1 个答案:

答案 0 :(得分:0)

此问题是由于前一个\n遗留了scanf个字符。在%c中的每个scanf说明符前放置一个空格以占用\n。 。

scanf(" %c", &introducido);   
...
scanf(" %c",&continuar); 
相关问题