我只是在玩诅咒,所以我发现了一个非常奇怪的行为。
当我使用 ncurses lib 中的 initscr() 时,然后我使用普通的 getchar(),然后程序在按下第一个键后终止。
我所期望的正常getchar()行为是,只要我按下回车键,我就可以键入(或多或少)。
#include "curses.h"
int main()
{
initscr();
getchar();
//endwin();
return 0;
}
有人能给我解释一下为什么会这样吗?
curses 将终端输入初始化为原始模式(这反过来又使连接的流表现得好像没有缓冲),以便 curses 可以检测单字符输入。getchar
假定输入是缓冲的,因此您可以按 Enter 结束输入行。在原始模式下,getchar
会立即返回,因为只要您按下某个键,读取
调用就会找到某些内容。
除了endwin
,您还可以使用其他curse函数在终端的生/熟模式之间来回切换(参见reset_shell_mode
和reset_prog_mode
的手册)。
getchar(由标准输入设备内读进一字符) 相关函数 fopen,fread,fscanf,getc 表头文件 #include<stdio.h> 定义函数 int getchar(void); 函数说明 getchar()用来从标准输入设备中读取一个字符。然后将该字符从unsigned char转换成int后返回。 返回值 getchar()会返回读取到的字符,若返回EOF则表示有错误发生。
getchar 由标准输入设备内读进一字符 相关函数 fopen,fread,fscanf,getc 表头文件 #include<stdio.h> 定义函数 int getchar(void); 函数说明 getchar()用来从标准输入设备中读取一个字符。然后将该字符从unsigned char转换成int后返回。 返回值 getchar()会返回读取到的字符,若返回EOF则表示有错误发生。
描述 (Description) C库函数int getchar(void) )从stdin获取一个字符(unsigned char)。 这相当于以stdin作为参数的getc 。 声明 (Declaration) 以下是getchar()函数的声明。 int getchar(void) 参数 (Parameters) NA 返回值 (Return Value) 此函数将读取的字符作为unsig
描述 (Description) java.lang.reflect.Field.getChar(Object obj)方法获取静态或实例char字段的值。 声明 (Declaration) 以下是java.lang.reflect.Field.getChar(Object obj)方法的声明。 public char getChar(Object obj) throws IllegalAr
问题内容: 是否有类似于C的Go功能,能够处理控制台中的Tab键?我想在控制台应用程序中完成一些工作。 问题答案: C的示例: 等效: 最后的注释行仅显示当您按下第一个元素时,是U + 0009(’CHARACTER TABULATION’)。 但是,由于您的需要(检测选项卡),C 并不适合,因为它需要用户按Enter键。您需要的是@miku提到的ncurses的getch()/ readline
我最近在摆弄最新的Android P版本,试图运行一个带有标志的简单服务。基本上,这就是我的设置: MainActivity.java null 现在,从recents菜单中删除应用程序后: 这是我所期望的行为。但当我在运行Android P DP4的更新手机上启动应用程序时,生命周期如下所示: 关于Android P null 提前感谢!