2017-10-11 78 views
1

我正在为ncurses创建Lua绑定,我想实现getstr,它从用户读取一个字符串。我想要的字符串基本上是无限的大小,就像在Lua中,但我不知道如何实现这一点。我只是读了一个非常大的字符数组,或者我是否在getch上做了某种魔术,直到我阅读换行符为止?绑定ncurses'getstr的最佳做法

我看到lcurses使用LUAL_BUFFERSIZE,但这种内存效率?这是最佳做法吗?

回答

1

标准算法是从合理大小的缓冲区开始,并且只在需要时调整大小。对于在终端的用户输入,可以安全地假定输入不可能超过大约一百个字符左右。从一个大小的缓冲区开始,并且只有在必要时才使其变大。

请确保您使用的是wgetnstr(),以便您可以对输入大小进行限制,但我会亲自使用wgetch()

一旦你有正确获得的字符串,把它放入一个LUA字符串并清理内存。

+0

我很感谢答案!你能提供一些示例代码或者一些示例代码的链接吗?我对先进的C很陌生,我宁愿比试验和错误更聪明一点。 – AlgoRythm