2013-04-26 71 views
-1

我似乎无法让我的键盘接受输入,我不知道为什么。我冲洗了缓冲区(或者我认为我做了),我得到的只是BCS。从键盘没有int输入c

这是我的菜单功能

//Menu 
int menu() { 
    int choice; 

    do { 
     printf("1)Move\n2)Display Maze\n3)Peek ahead\n"); 
     scanf("%i", &choice); 
     while(getchar() != '\n');  
    } while(choice<=0 && choice>3); 

    return choice; 
}//end menu 

这是我的主。我先打印迷宫出来,然后显示菜单

printMaze(maze); 
do 
{ 
    choice = menu();  
    if(choice == 1) 
    { 
     //direction = readDirection(); 
     //move(maze, direction); 
     printf("Hi\n"); 
    }// end choice 

    else if(choice ==2) 
     //displayMaze(maze); 
     printf("Hello\n"); 
    else 
     //peek(maze); 
     printf("Goodbye\n"); 

} while(choice!=4);//hag doesn't kill me or i find the exit) 
+1

什么是* BCS *? 。 。 。 – 2013-04-26 02:49:13

+0

@luserdroog闪烁的光标综合症.....我在菜单显示结束时缩小了它的位置。它实际上并没有达到任何下面的代码,但我不知道我在做什么错误 – kevorski 2013-04-26 02:51:09

+0

使用%d而不是%i ..参考http://bytes.com/topic/c/answers/484622-difference-between-scanf-i-scanf-d-maybe-bug-invs2005 – Mullaly 2013-04-26 02:51:39

回答

0

是什么操作系统您使用..,如果你尝试重新安装的Turbo C++编译器和重新配置“TC”目录的Windows版本。

+0

这是一条评论/问题而不是答案。另外,OP是否提及Turbo C++(对不起,如果我没有看到)? – jogojapan 2013-04-26 03:19:44

+0

我其实是想通了。我的老师哈哈有一段代码丢失了。但我使用的是Ubuntu 12.04 i386 – kevorski 2013-04-26 03:27:33

+0

@jogojapan:“我似乎无法让我的键盘接受输入,我不知道为什么,我冲洗了缓冲区(或者我认为我做了) m得到的是BCS。 这是我的菜单功能“turbo C++在这个定义中在哪里? – 2013-04-27 05:06:43

0

我不是很了对C,但....

你不应该扫描输入“内部” While循环?

while(getchar() != '\n'); 
    scanf("%i", &choice); 
}while(choice<=0 && choice>3); 
0

choice<=0 && choice>3 - >choice<=0 || choice>3

choice!=4 // 1 < = choice < = 3,永不choice == 4