绑定ncurses中getstr的最佳实践

我正在为ncurses创建Lua绑定,并且我想实现getstr,它从用户读取字符串。我希望字符串大小基本上是无限的,就像在Lua中一样,但我不确定如何实现。我只是读取非常大的char数组还是使用getch进行某种神奇操作,直到读取换行符?

我看到lcurses使用LUAL_BUFFERSIZE,但这是否内存有效?这是最佳实践吗?

点赞
用户2706707
用户2706707

将输入大小限制在合理范围内

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

请确保您使用 wgetnstr() 来限制输入的大小,但我个人更喜欢使用 wgetch()

一旦您获得了正确的字符串,将其放入一个 LUA 字符串中并清理内存。

2017-10-11 05:04:26