如何接受Tab作为STDIN的输入以自动填充文本

时间:2012-12-20 11:34:24

标签: c

如果使用C从STDIN开始一段时间后按下Tab键,我该如何自动填充文本?

输入看起来像,

C:\>autofil.exe Hello
C:\>autofil.exe Hello.  ( When I enter a period, it should autofil Hello after the period)
C:\>autofil.exe Hello.World  *World is autofilled when period was entered.

第二个要求是,如果我在

C:\>autofil.exe Hello.World  (And when i press Tab key, `World` should print with other suggestions, as `Friend`, and if I press Tab again, print `Matt`, and scroll so on when tab is pressed... )

嗯,这是我的要求。选项卡完成以自动填充文本。另外,想知道如何从STDIN读取Tab键。

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用Readline GNU library For Windows,非常容易使用,反过来就是使用PDcurses / Ncurses(几乎相同)并手动执行(处理控制台)行为等)。

如果您使用readline,则执行自动完成操作就像执行以下操作一样简单:

rl_bind_key('\t', rl_complete);
char *input = readline("C:\>");

如果你使用Ncurses / PDcurses,你将需要做更多的工作:)

  • 首先保存实际的控制台参数。
  • 然后用noecho()设置输入的回声。
  • 您必须处理输入并解析调用程序的参数。
  • 此外,您还必须搜索dirs(当前和PATH变量上的内容)以查找与当前输入相匹配的内容。

在结束程序之前,再次设置已保存的控制台参数。

Ncurses How-To是指点指南的简单权利。

Posix curses definition包含函数和键定义。