问题标签 [getch]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
1674 浏览

c++ - 一个简单的 getch() 和 strcmp 问题

我有一个简单的问题,它使用函数从用户那里获取输入,然后检查输入是否“等于”“密码”。但是,strcmp 永远不会返回我想要的值,罪魁祸首是在我的循环中的某个地方,它使用 getch() 分别获取每个字符并将它们添加到字符数组中。我通过让 printf 显示字符数组发现了这一点。如果我输入密码,该函数会将其显示为密码“。我不知道为什么在我输入的单词之后的数组中包含右双引号和空格。知道吗?这是代码。谢谢。

0 投票
4 回答
371 浏览

c - 如何将指针与 getc 结合使用?

我有一个函数 getNum(),它从文件中获取一个数字并返回它。当我回到 getNum() 时,我丢失了指针,它再次开始请求文件。我想知道如何获得 getc 所在的位置,然后回到那个地方。我在手册或论坛中找不到如何执行此操作。谢谢你。

0 投票
3 回答
1061 浏览

c - Strcat 在简单的类似 getch 的密码输入上引发分段错误

我正在使用 Linux,并且有一个自定义函数,它返回int当前密钥类型的ASCII getch()。在尝试习惯它以及如何存储密码时,我遇到了一个问题,我的代码如下:

不幸的是,我收到了来自 GCC 的警告:

我尝试使用指针而不是 char 数组进行传递,但第二次我键入了一个它的段错误的字母。该函数独立工作,但不在循环中,至少不像 Windows 系统上的 getch() 那样。

你能看出我的例子有什么问题吗?我很享受学习这个。

编辑:感谢答案,我想出了以下愚蠢的代码:

0 投票
5 回答
1143 浏览

c - 帮助 getch() 函数

我想使用 getch 函数来获取一个字符......所以用户只能输入 Y OR N 字符......但是 while 循环不起作用......我需要帮助!谢谢

0 投票
2 回答
5972 浏览

c++ - 如何在使用 kbhit() 和 getch() 时清除密钥缓冲区

heu 所以我正在使用上述 Windows 功能,幸运的是,这些功能适用于 Windows 2000 及更高版本,但在控制台上制作游戏时我遇到了一个问题:只要按下一个键,控制台就会通过 kbhit( ) 功能,无论是否再次按下某个键...

有什么方法可以清除键盘按键缓冲区,这样您就无法在没有新按键的情况下通过 kbhit?

如果需要新的库下载,我想我可以......但我希望有一种 Windows 标准方式!

谢谢!!

0 投票
5 回答
29402 浏览

c - C在按键时退出无限循环

按下某个键时,如何退出无限循环?目前我正在使用getch,但它会立即开始阻塞我的循环,因为没有更多的输入可供读取。

0 投票
2 回答
654 浏览

python - 是否可以使用 getch() 来获取不同长度的输入?

我已经开始冒险创建一个相对较小的命令行 RPG 来锻炼我新发现的 Python 肌肉,但我已经遇到了一个难题。我正在使用 getch() 的这个实现:

我已key设置读取 3 个字符以捕获箭头键。例如,Up 读作ESC[A; 使用这种方法,我可以key[2]用来确定是否按下了箭头键以及按下了哪个键。一切都很好,除了我还想捕获各种其他键;q用于任务日志,wasd用于移动(按各种顺序按箭头将是攻击方法)等等。问题马上就清楚了;如果getch()只返回一个字符,箭头功能将完全丢失。

如果没有简单的解决方案,我正在考虑完全重新考虑箭头系统,但我几乎可以肯定一定有。诚然,我对 内部发生的事情知之甚少tty,但我在某处读到,如果您只读取 1 个字符,则箭头按下的多余字符将保留在缓冲区中。我该如何访问所述缓冲区?或者,是否有一些聪明的方法可以告诉stdin期望输入可变长度?

提前感谢您的任何和所有帮助。

0 投票
2 回答
17738 浏览

c - 为什么 getch() 在按下任何键之前返回?

根据手册页,

getch应该等到任何键被按下

...但实际上它在按任意键之前直接返回。(返回值为-1)。

为什么?


更新

我在Linux上。Press any key to exit.如果不使用,我该如何实施getch()

getchar()只会在按 Enter 后返回,这不是我想要的。

0 投票
6 回答
135408 浏览

c - Linux 中的 getch() 和 getche() 等价物是什么?

我无法在 Linux 中找到 conio.h 的等效头文件。

Linux中是否有getch()&功能的选项?getche()

我想制作一个开关盒基本菜单,用户只需按一个键就可以提供他的选项,并且应该向前移动进程。我不想让用户在按下他的选择后按下 ENTER。

0 投票
1 回答
774 浏览

python - 如何从 process.Popen() 引发事件 getche() - 不监视标准输入

我正在使用以下命令在 Windows 中启动二进制文件:

这是从标准输出读取的一种很酷的非阻塞方法。这是这个 SO 问题的公认答案: 如何从 subprocess.Popen.stdout(非阻塞)读取所有可用数据?

这是我尝试启动/监视进程的大部分脚本:

无论如何,我可以很好地阅读使用这种方法的过程。当我尝试使用以下方式写入进程时:

i = process.stdin i.write("s\n") 或 i.write("s")

输出会打印在控制台窗口中,但不会被二进制文件捕获。我查看了 IDA Pro 中的二进制文件,发现它使用非标准方法在运行时捕获用户输入。

该进程是一个交互式 cli 工具,它等待 S、R、P 或 Q(状态、恢复、暂停、退出)***,并在用户按下 ente***r 时捕获输入。这是使用 getche() 完成的。我将二进制文件扔给 IDA Pro 以确认:

有谁知道如何触发这个事件?这看起来很有希望:http ://docs.python.org/library/msvcrt.html ,我尝试使用:

msvcrt.ungetch("s") "导致字符 char 被“推回”到控制台缓冲区;它将是 getch() 或 getche() 读取的下一个字符。"

它确实将字母“s”推送到控制台,但没有在 getche() 上触发我的断点。手动击中字母 S 确实有效,并且确实会导致 IDA pro 击中断点

停止?:)

编辑:

我创建了两个小型 Windows 控制台应用程序来演示什么有效,什么无效,并确保我的 python 是健全的。

第一个我无法通过写入标准输入来识别输入,第二个我可以。

可以写这个:

编辑 2 我也试过: import subprocess import time from e import * import msvcrt