windows 上的 pdcurses - printw() 不打印长字符串 (C) - ncurses 在 linux 上工作正常 - 可能是错误还是我的实现有误?

pdcurses on windows - printw() doesn't print long strings (C) - ncurses works fine on linux - possible bug or is my implementation wrong?

以下是我的代码,演示长字符串无法使用 pdcurses 打印。

#include <curses.h>
#include <string.h>

#define SIZE 256

void get_file_data(char *filename, char *file_data)
{
    // CREATES POINTER TO FILE
    FILE *file;

    // LINE BUFF OF FILE
    char buff[SIZE];
    // OPENS GRAPHICS FILE
    file = fopen(filename, "a+");

    // LOOPS UNTIL EVERY LINE HAS BEEN PRINTED
    while(fgets(buff, SIZE, (FILE*)file))
    {
        // PRINTS EACH LINE
        strcat(file_data, buff);
    }
    strcat(file_data, "\n");

    // CLOSES FILE
    fclose(file);
}

int main()
{
    initscr();

    char input[SIZE];
    char str[12800];

    get_file_data("graphic.txt", str);

    printw("%s", str);

    getstr(input);

    endwin();

    return 0;
}

这是graphic.txt

的内容

   -------------------------------------------------------
   |                                                     |
   |                                                     |
   |                                                     |
   |                                                     |
   |                                                     |
   |                                                     |
   |                                                     |
   |                                                     |
   |                                                     |
   |                                                     |
   -------------------------------------------------------

   Hello there!

这就是我的程序输出的内容


   -------------------------------------------------------
   |                                                     |
   |                                                     |
   |                                                     |
   |                                                     |
   |                                                     |
   |                                                     |
   |                                                     |
   |                                   ^]"b

我的代码有问题还是 pdcurses 有问题?如标题中所述,ncurses 在 linux 上运行良好,但我正在尝试在 windows 上使用 pdcurses 进行编译。

PDCurses 中 printw() 的内部缓冲区只有 513 个字符——足以容纳 6 多行 80 列的行。较长的字符串被截断。这是我必须考虑重组的事情。

与此同时,您可以通过简单地打印每一行来解决这个问题,因为您已经在逐行阅读它们 --

while(fgets(buff, SIZE, (FILE*)file))
{
    // PRINTS EACH LINE
    printw("%s\n", buff);
}