Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 按住屏幕以接受箭头键_C++_Arrow Keys_Getch - Fatal编程技术网

C++ 按住屏幕以接受箭头键

C++ 按住屏幕以接受箭头键,c++,arrow-keys,getch,C++,Arrow Keys,Getch,对于使用箭头键,首先必须存储它以进行分析。这就是为什么我使用scanf来存储它。 但是,当我尝试运行此代码时,当我按up键时,它会显示^[[A,当我按enter键时,此^[[A删除并退出程序,而不打印printf(“%s”,c”)的printf语句。和printf(“up\n”)。 #包括 int main() { charc[50]; scanf(“%s”、&c); printf(“%s”,c); 如果(getch()='\033'){//如果第一个值是esc getch();//跳过[ ge

对于使用箭头键,首先必须存储它以进行分析。这就是为什么我使用
scanf
来存储它。 但是,当我尝试运行此代码时,当我按up键时,它会显示
^[[A
,当我按enter键时,此
^[[A
删除并退出程序,而不打印
printf(“%s”,c”)的printf语句。
printf(“up\n”)。

#包括
int main()
{
charc[50];
scanf(“%s”、&c);
printf(“%s”,c);
如果(getch()='\033'){//如果第一个值是esc
getch();//跳过[
getch();//跳过[
开关(getch()){//实际值
案例“A”:
printf(“UP\n”);
打破
案例“B”:
printf(“向下\n”);
打破
}
}
返回0;
}

如果您使用ncurses库,您会发现它非常简单。只需通过查看了解如何安装它。 安装后,请阅读上的零件

下面是一个示例代码

#include <ncurses.h>
int main()
{
    int ch;

    initscr();
    raw();
    keypad(stdscr, TRUE);
    noecho();

    while(1)
    {
        ch = getch();

        switch(ch)
        {
            case KEY_UP: 
                printw("\nUp Arrow");
                break;
            case KEY_DOWN: 
                printw("\nDown Arrow");
                break;
            case KEY_LEFT: 
                printw("\nLeft Arrow");
                break;
            case KEY_RIGHT: 
                printw("\nRight Arrow");
                break;
        }

        if(ch == KEY_UP)
            break;
    }

    endwin();
}
#包括
int main()
{
int-ch;
initscr();
原始();
键盘(stdscr,真);
noecho();
而(1)
{
ch=getch();
开关(ch)
{
案例编号:
printw(“\nUp箭头”);
打破
案例键向下:
printw(“\n向下箭头”);
打破
案例键左:
printw(“\n左箭头”);
打破
案例编号:右:
printw(“\n右箭头”);
打破
}
如果(ch==键向上)
打破
}
endwin();
}

这不是它的工作原理!你到底想做什么?重新发明诅咒,或者…?先生,这个程序启动屏幕,在按键时不打印任何printf语句,当按下uparrow时,不打印“uparrow”退出.先生,我在您的代码中遇到了问题。我们应该使用printw代替printf来打印格式化输出。先生,但是当我们初始化屏幕时,此代码可以工作。它在当前控制台上不工作。谢谢。我认为ncurses是在linux设备中预设的。ri8@Jaydeep@AmrithKrishnancurses是预先安装在我们的实验室操作系统上的buntu和它工作得很好。不过,为了让它在实验室操作系统上工作,我们需要将printf更改为printw。@piyush balwani您只需要在shell中将printf转换为printw。我想,没有其他需要更改的。
#include <ncurses.h>
int main()
{
    int ch;

    initscr();
    raw();
    keypad(stdscr, TRUE);
    noecho();

    while(1)
    {
        ch = getch();

        switch(ch)
        {
            case KEY_UP: 
                printw("\nUp Arrow");
                break;
            case KEY_DOWN: 
                printw("\nDown Arrow");
                break;
            case KEY_LEFT: 
                printw("\nLeft Arrow");
                break;
            case KEY_RIGHT: 
                printw("\nRight Arrow");
                break;
        }

        if(ch == KEY_UP)
            break;
    }

    endwin();
}