编写2D数组Ncurses C.

时间:2018-04-07 04:01:41

标签: c ncurses

我想使用Ncurses将2D字符数组写入标准输出。有没有办法可以直接将2D字符数组设置到窗口,而不必使用waddch之类的东西将单个值设置到窗口?

1 个答案:

答案 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;
}