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);
}
以下是我的代码,演示长字符串无法使用 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);
}