我如何阻止阻挡?

我如何阻止阻挡?

问题描述:

嘿,我在过去几天问过这个问题几次,但我只是不明白它......我基本上想要在后台执行Beep命令的while循环,而用户可以进行交互与可用的案例陈述(只有一个显示..其他人)....我不断被阻止,每次我想要嘟嘟声不断发出声音,我阻止我的程序的其余部分...我必须使用哔声请不要提出任何其他功能..我如何阻止阻挡?

这里是一个示例代码...

while(keypress != 'q' || keypress != 'Q') 
{ 
    x = Beep(x); 
    while (x == 1) 
     Beep(350,300); 

    alarm_t current; 
    keypress = _getch(); 

    switch(keypress){ 

     case 'h': 
      sprintf_s(current.message,"high alarm"); 
      current.timeOfEvent = time(NULL); 
      recordEvent(current); 
      break; 

现在...我的问题是与while循环和蜂鸣命令....这里是什么我打电话给哔声(x)

int Beep(int y) 
{ 
    return y; 
} 

所以基本上我试图调用一个函数我目前CPP文件只是比较X和Y之外,并返回是等价于X ...我想这可能避免阻塞,但它不...

+5

'而(!按键= 'Q' &&按键= 'Q'!)' – wildplasser 2013-03-27 22:20:36

+0

导致程序通过蜂鸣堵塞... – 2013-03-27 22:25:50

+1

你”我真的得停止while循环while循环。如果你做得对,你的上层循环速度非常快,以至于如果你只是在没有内部'while'的情况下调用Beep,用户就不会听到太大的差别。 – 2013-03-27 22:26:32

你的while循环嘟嘟只是不会工作,_getch阻止。所以它会阻止,直到有一个角色。

根据你的平台,你需要像kbhit(如果你谷歌,你会发现其他平台的替代品)。即它不是标准的C功能和平台特定的。

kbhit将根据是否有字符返回true或false。

所以,你可以这样做:

while(!key_is_quit(ch)) 
{ 
    Beep(); 
    if(kbhit()) 
    { 
    ch = getch(); 
    // switch.... 
    } 
}