我正在尝试编写一个程序,其中一个数字从0开始,但当你按任意键时,它会增加1.如果没有按任何一个,它会继续每秒减少1,直到它达到0.每个增量或递减显示在控制台窗口中.
我的方法的问题是,在我按下一个键之前没有任何反应(也就是说,它检查是否有任何按下getch()).如何检查没有按下任何内容?当然,!getch()不起作用,因为要工作,它仍然需要检查按键,这会使目的本身无效.
操作系统:Windows 10企业版,IDE:代码::块
void main()
{
int i, counter = 0;
for (i = 0; i < 1000; i++)
{
delay(1000);
// if a key is pressed, increment it
if (getch())
{
counter += 1;
printf("\n%d", counter);
}
while (counter >= 1)
{
if (getch())
{
break;
}
else
{
delay(1000);
counter--;
printf("\n%d", counter);
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 当按下某个键时,如何退出无限循环?目前我正在使用getch,但它会尽快开始阻止我的循环,因为没有更多的输入要读取.
我正在尝试放入另一条语句以逻辑AND结束while循环:
while ( (character != '\n') && ( i < 10 ) )
Run Code Online (Sandbox Code Playgroud)
...多余的+10:th个字母不会存储在数组中。但是我仍然可以输入输入,直到按ENTER /'\ n'为止。
我究竟做错了什么?“额外输入”会发生什么?
这是代码:
char character;
char buffer[81];
int i = 0;
do
{
character = getchar();
buffer[i] = character;
++i;
} while ( (character != '\n') && (i < 10) );
buffer[i-1] = '\0';
Run Code Online (Sandbox Code Playgroud)