C ncurses getnstr 长度

C ncurses getnstr length

我正在用 C 中的 ncurses 制作一个简单的 'game',对于名称输入,我使用 getnstr。我有以下代码:

printw("What is your name? ");
char name[10];
int namelen = getnstr(name, 10);

现在,我想允许最多 10 个字符,并且我想使用边框名称的长度。但是,由于某种原因 namelen 为 0(我认为 getnstr 返回了长度)。

如何获得正确的名称长度?因此,如果我插入 Josh 作为名称,我会得到 4。sizeof(name) returns 10 所以它没有用。

根据文档,getnstr 不是 return 字符串的长度,而是 OK 或 ERR (http://pubs.opengroup.org/onlinepubs/007908799/xcurses/getnstr.html)。

如果需要字符串的长度,使用strlen(string.h)。

PS :如果你想允许最多 10 个字符,你需要一个 11 个字符的数组(10 个字符 + [=11=]

编辑:在 curses.h 代码中找到:

#define ERR (-1)            /* Error return. */
#define OK  (0)         /* Success return. */

为什么不这样做:

char s[10];
scanf("%10s", s);
printf("Length : %d\n", (int) strlen(s));

对于strlen,先做#include <string.h>