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>
。
我正在用 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>
。