[英]using ncurses to print ascii art from file acts strangely
我正在尝试使用ncurses将ascii art(存储在单独的文件中)打印到终端。
这是我的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, COLOR_BLACK);
attron(COLOR_PAIR(1));
/** (READS AND PRINTS THE FILE HERE, DESCRIPTION BELOW) **/
wrefresh(startScreen);
attroff(COLOR_PAIR(1));
wgetch(startScreen);
endwin();
}
上面的代码读取文件的内容,如果字符是文件中的#
,则打印块字符。 (按字符打印文件的种类)所有内容都在startScreen
打印, startScreen
是一个独立的窗口。
这是文件的内容:
## ## ###### ###### ###### ###### ## ########
### ### ## ## ## ## ## ## ## ##
######### ## ## ## ## ## ##
## ### ## ## ###### ###### ## ## ######
## # ## ## ## ## ## ## ##
## ## ## ## ## ## ## ## ## ##
## ## ###### ###### ###### ###### ######## ########
##### ###### ## ## ## ## ### ## ## ######
## ## ## ## ### ### ### ### ## ## ### ## ## ##
## ## ## #### #### #### #### ## ## #### ## ## ##
## ## ## ## ### ## ## ### ## ## ## ####### ## ##
## ## ## ## # ## ## # ## ######## ## #### ## ##
## ## ## ## ## ## ## ## ## ## ## ### ## ##
##### ###### ## ## ## ## ## ## ## ## ######
但是,当我运行C代码时,它给出了:
▒▒ ▒▒ ▒▒▒▒▒▒ ▒▒▒▒▒▒ ▒▒▒▒▒▒ ▒▒▒▒▒▒ ▒▒ ▒
▒▒▒ ▒▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒
▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒
▒▒ ▒▒▒ ▒▒ ▒▒ ▒▒▒▒▒▒ ▒▒▒▒▒▒ ▒▒ ▒▒ ▒▒▒▒▒▒
▒▒ ▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒
▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒
▒▒ ▒▒ ▒▒▒▒▒▒ ▒▒▒▒▒▒ ▒▒▒▒▒▒ ▒▒▒▒▒▒ ▒ ▒
▒▒▒▒▒ ▒▒▒▒▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒▒ ▒▒ ▒▒ ▒▒▒▒▒▒
▒▒ ▒▒ ▒▒ ▒▒ ▒▒▒ ▒▒▒ ▒▒▒ ▒▒▒ ▒▒ ▒▒ ▒▒▒ ▒▒ ▒▒ ▒▒
▒▒ ▒▒ ▒▒ ▒▒▒▒ ▒▒▒▒ ▒▒▒▒ ▒▒▒▒ ▒▒ ▒▒ ▒▒▒▒ ▒▒ ▒▒ ▒▒
▒▒ ▒▒ ▒▒ ▒▒ ▒▒▒ ▒▒ ▒▒ ▒▒▒ ▒▒ ▒▒ ▒▒ ▒ ▒▒ ▒▒
▒▒ ▒▒ ▒▒ ▒▒ ▒ ▒▒ ▒▒ ▒ ▒▒ ▒ ▒▒ ▒▒▒▒ ▒▒ ▒▒
▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒▒ ▒▒ ▒▒
▒▒▒▒▒ ▒▒▒▒▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒▒▒▒▒
我完全不知道为什么会有块丢失。 它为什么会这样?
还有另一个问题具有类似的原因。 但是,问题的特征是不同的,因此是一个单独的问题。
看来这个问题在Linux子系统Linux中是独一无二的,我首先遇到了这个问题。
相同的脚本在Linux中可以100%正常运行,但在Windows的Solaris子系统中则不行。
使其在WSL中工作的解决方法是在打印每个字符wrefresh(startScreen)
后刷新窗口。 然而,根本原因仍然未知。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.