使用ncurses从文件中打印ascii艺术表现得很奇怪
我正在尝试使用ncurses将存储在单独文件中的ascii艺术打印到终端 这是我的C代码:使用ncurses从文件中打印ascii艺术表现得很奇怪,c,ncurses,C,Ncurses,我正在尝试使用ncurses将存储在单独文件中的ascii艺术打印到终端 这是我的C代码: #include <ncurses.h> #include <string.h> int main() { initscr(); raw(); WINDOW * startScreen = newwin(20, 70, 0, 0); curs_set(FALSE); start_color(); init_pair(1, COLOR_WHITE, COL
#include <ncurses.h>
#include <string.h>
int main() {
initscr();
raw();
WINDOW * startScreen = newwin(20, 70, 0, 0);
curs_set(FALSE);
start_color();
init_pair(1, COLOR_WHITE, COLOR_BLACK);
attron(COLOR_PAIR(1));
/** (READS AND PRINTS THE FILE HERE, DESCRIPTION BELOW) **/
wrefresh(startScreen);
attroff(COLOR_PAIR(1));
wgetch(startScreen);
endwin();
}
但是,当我运行C代码时,它会给出:
▒▒ ▒▒ ▒▒▒▒▒▒ ▒▒▒▒▒▒ ▒▒▒▒▒▒ ▒▒▒▒▒▒ ▒▒ ▒
▒▒▒ ▒▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒
▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒
▒▒ ▒▒▒ ▒▒ ▒▒ ▒▒▒▒▒▒ ▒▒▒▒▒▒ ▒▒ ▒▒ ▒▒▒▒▒▒
▒▒ ▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒
▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒
▒▒ ▒▒ ▒▒▒▒▒▒ ▒▒▒▒▒▒ ▒▒▒▒▒▒ ▒▒▒▒▒▒ ▒ ▒
▒▒▒▒▒ ▒▒▒▒▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒▒ ▒▒ ▒▒ ▒▒▒▒▒▒
▒▒ ▒▒ ▒▒ ▒▒ ▒▒▒ ▒▒▒ ▒▒▒ ▒▒▒ ▒▒ ▒▒ ▒▒▒ ▒▒ ▒▒ ▒▒
▒▒ ▒▒ ▒▒ ▒▒▒▒ ▒▒▒▒ ▒▒▒▒ ▒▒▒▒ ▒▒ ▒▒ ▒▒▒▒ ▒▒ ▒▒ ▒▒
▒▒ ▒▒ ▒▒ ▒▒ ▒▒▒ ▒▒ ▒▒ ▒▒▒ ▒▒ ▒▒ ▒▒ ▒ ▒▒ ▒▒
▒▒ ▒▒ ▒▒ ▒▒ ▒ ▒▒ ▒▒ ▒ ▒▒ ▒ ▒▒ ▒▒▒▒ ▒▒ ▒▒
▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒▒ ▒▒ ▒▒
▒▒▒▒▒ ▒▒▒▒▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒▒▒▒▒
我完全不知道为什么有街区不见了。为什么会这样
还有一个原因类似。但是,问题的特点是不同的,因此是一个单独的问题。这个问题似乎在Windows Linux子系统中是唯一的,我第一次遇到这个问题 同样的脚本在Linux中可以100%正常工作,但在Linux的Windows子系统中不能
在WSL中工作的一个解决方法是在打印每个字符后刷新窗口,
wrefresh(startScreen)
。然而,根本原因仍不清楚。@GabrielLee可能是您的图形文件被微妙地弄乱了;也许可以尝试将上面的内容复制/粘贴到新的文本文件中。请注意(以及)返回int
。这对于与EOF
进行比较实际上非常重要。不过,我建议在空格字符的代码中添加另一个else if
,然后添加else
,以捕获任何其他字符。@Gabrielle出于好奇,我复制/编译了您的代码以及ascii艺术,它在这里工作没有问题。一定和你的环境有关。你是不是碰巧通过串行或其他不安全的通道传输数据?@Gabrielle好的,很好。但我担心,如果你不调查,找出真相并在这里告诉我们,没有人会这么做;)这可能是一个时间问题,您可以从在打印字符之间添加一个小延迟开始。根本原因是Microsoft的EEE和一般无法遵循实际标准和有用行为。在W10版本1803上使用WSL,我构建并运行了您的程序,没有做任何修改。它似乎没有任何问题。。
▒▒ ▒▒ ▒▒▒▒▒▒ ▒▒▒▒▒▒ ▒▒▒▒▒▒ ▒▒▒▒▒▒ ▒▒ ▒
▒▒▒ ▒▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒
▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒
▒▒ ▒▒▒ ▒▒ ▒▒ ▒▒▒▒▒▒ ▒▒▒▒▒▒ ▒▒ ▒▒ ▒▒▒▒▒▒
▒▒ ▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒
▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒
▒▒ ▒▒ ▒▒▒▒▒▒ ▒▒▒▒▒▒ ▒▒▒▒▒▒ ▒▒▒▒▒▒ ▒ ▒
▒▒▒▒▒ ▒▒▒▒▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒▒ ▒▒ ▒▒ ▒▒▒▒▒▒
▒▒ ▒▒ ▒▒ ▒▒ ▒▒▒ ▒▒▒ ▒▒▒ ▒▒▒ ▒▒ ▒▒ ▒▒▒ ▒▒ ▒▒ ▒▒
▒▒ ▒▒ ▒▒ ▒▒▒▒ ▒▒▒▒ ▒▒▒▒ ▒▒▒▒ ▒▒ ▒▒ ▒▒▒▒ ▒▒ ▒▒ ▒▒
▒▒ ▒▒ ▒▒ ▒▒ ▒▒▒ ▒▒ ▒▒ ▒▒▒ ▒▒ ▒▒ ▒▒ ▒ ▒▒ ▒▒
▒▒ ▒▒ ▒▒ ▒▒ ▒ ▒▒ ▒▒ ▒ ▒▒ ▒ ▒▒ ▒▒▒▒ ▒▒ ▒▒
▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒▒ ▒▒ ▒▒
▒▒▒▒▒ ▒▒▒▒▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒▒▒▒▒