我想使用Ncurses将2D字符数组写入标准输出。有没有办法可以直接将2D字符数组设置到窗口,而不必使用waddch之类的东西将单个值设置到窗口?
答案 0 :(得分:0)
不,没有这样的功能,(恕我直言)图书馆不应该提供这样的东西。
考虑在循环中使用waddstr:
void func(WINDOW *window, int rows, int cols, char (*arr)[cols])
{
int i;
for (i = 0; i < rows; i++) {
waddstr(window, arr[i]);
}
}
int main(void)
{
char arr[][6] = {"hello", "bye"};
func(window, sizeof(arr) / sizeof(*arr), sizeof(*arr), arr);
return 0;
}
当然,您可以使用指向char
的指针数组来简化此操作,而不是char
的纯二维数组:
void func(WINDOW *window, char **ptr)
{
while (*ptr != NULL) {
waddstr(window, *ptr++);
}
}
int main(void)
{
char *arr[] = {"hello", "bye", NULL};
func(window, arr);
return 0;
}