我正在为ncurses创建Lua绑定,我想实现getstr
,它从用户读取一个字符串。我希望字符串基本上没有大小,就像Lua一样,但我不知道如何实现它。我只是读了一个非常大的字符数组,或者我用getch
做了一些魔法,直到我读到换行符?
我看到lcurses使用LUAL_BUFFERSIZE
但这个内存有效吗?这是最好的做法吗?
答案 0 :(得分:1)
标准算法是从一个合理大小的缓冲区开始,只在需要时调整大小。对于终端处的用户输入,可以安全地假设输入不能超过大约一百个字符左右。从一个大小的缓冲区开始,并且只在必要时使其变大。
请确保您使用的是wgetnstr()
,以便限制输入的大小,但我个人会使用wgetch()
。
获得正确获取的字符串后,将其放入LUA字符串并清理内存。