1

嘿,过去几天我已经问了几次这个问题,但我就是不明白......我基本上希望在后台执行 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循环和Beep命令......这是我对Beep(x)的调用

int Beep(int y)
{ 
    return y;
}

所以基本上我试图在我当前的 cpp 文件之外调用一个函数来比较 x 和 y,并返回 y 等价于 x ...我认为这可能会避免阻塞,但它不会...

4

1 回答 1

3

您的 while 循环哔哔声将无法正常工作并且_getch正在阻塞。所以它只会阻塞,直到有一个字符。

根据您所在的平台,您需要类似的东西kbhit(如果您用谷歌搜索,您会找到其他平台的替代品)。即它不是标准的C 功能和特定于平台的。

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

所以你可以这样做:

while(!key_is_quit(ch))
{
  Beep();
  if(kbhit())
  {
    ch = getch();
  // switch....
  }
}
于 2013-03-27T22:31:06.973 回答