0

在使用 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 键。

谢谢!

4

1 回答 1

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 定义包含函数和键定义。

于 2012-12-20T18:27:45.813 回答