当前位置: 首页 > 知识库问答 >
问题:

Getch()未读取输入

和嘉澍
2023-03-14

我尝试使用getch()和kbsit()读取用户的输入,但它似乎无法识别按键被按下。

void main(){
    printf("start\n");
    while (1){
        if (kbhit() == 1){
            printf("in\n");
            int k = getch();
            printf("k: %d\n", k);
        }
    }
}

此代码打印“开始”,按下键时不打印任何内容。使用getch()读取和打印哪怕一个字符,而不使用循环,我都不走运。

共有1个答案

戎永福
2023-03-14

发布的代码无法编译!

无论visual studio允许什么,对于main(),只有2个有效签名:

int main( void )
int main( int argc, char *argv[] )

请注意,它们都返回一个int,而不是void

发布的代码缺少必要的#include语句

当问一个运行时问题时,就像这个问题所做的那样,发布一个[mcve],这样我们就可以重新创建这个问题。

当按下一个键时,函数:kbsit()返回一个非零值(不一定是1)。

建议:

#include <stdio.h>
#include <conio.h>  // note: this is a nonstandard header
                    // in Windows, so it is not portable
int main( void )
{
    printf("start\n");

    while (1)
    {
        if ( kbhit() )
        {
            printf( "in\n" );
            int k = getch();
            printf( "k: %d\n", k );
        }
    }
}
 类似资料:
  • 我目前正试图从服务器读取图像文件,但得到的数据不完整或 这与缓冲区大小有关吗?我已经尝试使用静态大小而不是ContentLength。敬请指教。

  • 我正在尝试让voiceover在safari上工作,但是,在某个场景中,当我在元素中跳转时,它似乎不会读出新输入框的aria-label。 场景: 当跳转到下一个元素,并且当前元素的on模糊对dom起作用时,它将不会读出下一个元素的aria-label。 下面是一个示例http://plnkr.co/edit/x0c67oil0wlqeGubiqvz?p=preview 请注意,如果您取出下面的o

  • 问题内容: 我正在Ubuntu 11.4上的一个终端上运行它。 假设我执行一个bash脚本,输出为: 在同一个bash脚本中,如何将上述输出存储为一个或多个变量? 理想的解决方案是准备好在以下条件中使用:(输出的第一行将存储在等中) 问题答案: 所以你要 请参见Bash手册中的“此处字符串” 。 或流程替代

  • 问题内容: 我正在编写一个连接到servlet的程序,这要感谢a,但是我在检查url时卡住了 我得到了错误: java.net.ProtocolException:读取输入后无法写入输出。 如果我用注释中的代码检查网址,但不幸的是它可以正常工作,我需要检查网址,所以我认为问题出在方法上,但我不知道如何解决 非常感谢你 问题答案: HTTP协议基于请求-响应模式:首先发送请求,然后服务器响应。服务器

  • 问题内容: 我正在使用从运行约一分钟的进程中读取stdout。 我该如何stdout以流方式打印出该流程的每一行,以便可以看到生成的输出,但仍然阻止该流程终止,然后再继续? 似乎一次给出所有输出。 问题答案: 这是一个简单的示例(不检查错误): 如果ls结束太快,则while循环可能会在你读取所有数据之前结束。 你可以通过以下方式在中捕获其余部分:

  • 问题内容: 我有一个应该调用ruby脚本的go程序。 我有一个功能: 我这样调用它: 它适用于大多数情况,除非子进程中有一个或任何类似的操作需要暂停输入。 我已经尝试设置,但是它不等待输入。 我究竟做错了什么? 问题答案: 下面的程序好像你问什么(我几乎等同于你的。我只是改变了到了线。)你在做一些不同的东西?