相关疑难解决方法(0)

你如何编写一个C程序来通过按键递增一个数字并每秒自动递减一次?

我正在尝试编写一个程序,其中一个数字从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)

c windows user-input

13
推荐指数
2
解决办法
2530
查看次数

C在按键上退出无限循环

当按下某个键时,如何退出无限循环?目前我正在使用getch,但它会尽快开始阻止我的循环,因为没有更多的输入要读取.

c getch infinite-loop

9
推荐指数
1
解决办法
2万
查看次数

循环中的几个语句

我正在尝试放入另一条语句以逻辑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)

c while-loop logical-operators

1
推荐指数
1
解决办法
95
查看次数