首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Getch()不读取输入

Getch()不读取输入
EN

Stack Overflow用户
提问于 2018-11-26 22:31:30
回答 1查看 879关注 0票数 1

我尝试使用getch()和kbhit()来读取用户的输入,但它似乎没有识别出按下了键。

代码语言:javascript
复制
void main(){
    printf("start\n");
    while (1){
        if (kbhit() == 1){
            printf("in\n");
            int k = getch();
            printf("k: %d\n", k);
        }
    }
}

此代码打印“开始”,在按下键时不打印任何内容。在没有循环的情况下,使用getch()读取和打印一个字符也没有什么好运气。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-26 22:50:38

发布的代码不编译!

main()只有两个有效的签名,不管visual可能允许什么:

代码语言:javascript
复制
int main( void )
int main( int argc, char *argv[] )

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

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

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

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

建议:

代码语言:javascript
复制
#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 );
        }
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53490111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档