Я пытаюсь распечатать ascii art, который хранится в отдельном файле, на терминал, используя ncurses.
Вот мой код 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
, независимом окне.
Вот содержимое файла:
## ## ###### ###### ###### ###### ## ########
### ### ## ## ## ## ## ## ## ##
######### ## ## ## ## ## ##
## ### ## ## ###### ###### ## ## ######
## # ## ## ## ## ## ## ##
## ## ## ## ## ## ## ## ## ##
## ## ###### ###### ###### ###### ######## ########
##### ###### ## ## ## ## ### ## ## ######
## ## ## ## ### ### ### ### ## ## ### ## ## ##
## ## ## #### #### #### #### ## ## #### ## ## ##
## ## ## ## ### ## ## ### ## ## ## ####### ## ##
## ## ## ## # ## ## # ## ######## ## #### ## ##
## ## ## ## ## ## ## ## ## ## ## ### ## ##
##### ###### ## ## ## ## ## ## ## ## ######
Однако, когда я запускаю код C, он дает следующее:
▒▒ ▒▒ ▒▒▒▒▒▒ ▒▒▒▒▒▒ ▒▒▒▒▒▒ ▒▒▒▒▒▒ ▒▒ ▒
▒▒▒ ▒▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒
▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒
▒▒ ▒▒▒ ▒▒ ▒▒ ▒▒▒▒▒▒ ▒▒▒▒▒▒ ▒▒ ▒▒ ▒▒▒▒▒▒
▒▒ ▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒
▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒
▒▒ ▒▒ ▒▒▒▒▒▒ ▒▒▒▒▒▒ ▒▒▒▒▒▒ ▒▒▒▒▒▒ ▒ ▒
▒▒▒▒▒ ▒▒▒▒▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒▒ ▒▒ ▒▒ ▒▒▒▒▒▒
▒▒ ▒▒ ▒▒ ▒▒ ▒▒▒ ▒▒▒ ▒▒▒ ▒▒▒ ▒▒ ▒▒ ▒▒▒ ▒▒ ▒▒ ▒▒
▒▒ ▒▒ ▒▒ ▒▒▒▒ ▒▒▒▒ ▒▒▒▒ ▒▒▒▒ ▒▒ ▒▒ ▒▒▒▒ ▒▒ ▒▒ ▒▒
▒▒ ▒▒ ▒▒ ▒▒ ▒▒▒ ▒▒ ▒▒ ▒▒▒ ▒▒ ▒▒ ▒▒ ▒ ▒▒ ▒▒
▒▒ ▒▒ ▒▒ ▒▒ ▒ ▒▒ ▒▒ ▒ ▒▒ ▒ ▒▒ ▒▒▒▒ ▒▒ ▒▒
▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒▒ ▒▒ ▒▒
▒▒▒▒▒ ▒▒▒▒▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒▒▒▒▒
Я понятия не имею, почему отсутствуют блоки. Почему он так себя ведет?
Есть еще один вопрос с аналогичной причиной. Однако характеристика проблемы иная, поэтому это отдельный вопрос.