【发布时间】:2011-11-10 12:47:20
【问题描述】:
我正在使用 Foundation 学习 Objective C 并打印到控制台。我想知道(以及如何)是否可以输入一个字符或字符串,并且它会自动打印出来而无需按下返回键(或任何键)。显然,下面的简单代码仍然需要按下回车键。我知道这段代码混合在 C 和 objC 之间,但我一直在尝试不同的想法。我也试图在不使用 Ncurses 的情况下做到这一点。提前致谢。
字符输入[1];
NSLog(@"enter key:");
fgets(input, 1, stdin);
NSString *inputString = [[NSString alloc]initWithCString:input];
NSLog(@"Input = %s",input);
我刚刚找到了一个很好的答案,如下所示: // 设置终端为原始模式 system("stty raw");
// Wait for single character
char input = getchar();
// Echo input:
// Reset terminal to normal "cooked" mode
system("stty cooked");
// And we're out of here
NSLog(@"INPUT = %c",input);
【问题讨论】:
-
问了 8 个问题,没有一个被接受,并且投了零票——人们可能想知道为什么他们应该把宝贵的时间放在你身上。
-
@KerrekSB - 供搜索者使用。人们想要回答同样的问题,现在他们会找到它们。如果这就是你所追求的,甚至可能会给你投票。并非每个人都以相同的方式参与。
-
您知道您使用
system()的解决方案是在子进程中启动一个完整的shell,在这种情况下,与我的回复中提到的cfmakeraw()几乎相同,对吧?此外,stty的手册提到了 tty 标记原始选项集,那么为什么不直接使用tcsetattr设置它们呢?我感觉你故意忽略你得到的答案。 -
@KerrekSB 放松了一点——你看起来很痛苦和悲伤。我的帖子清楚地表明我是目标 C 的新手,我有一个真正的问题。迄今为止,这个网站对看似好人的人来说确实很有帮助 - 不要让它失望。
-
@KateGregory - 我对 upVotes 不感兴趣。我只是找到了一个答案,我认为它可能会帮助其他人阅读这篇文章。
标签: c++ objective-c