Я подозреваю, что вы пытаетесь печатать за пределами окна.
В частности, я бы предположил, что здесь:
mvwprintw(results_scrn,num_rows_res,(num_col_res/2) - 2,"Close");
... num_rows_res
являетсяколичество строк в окне results_scrn
- но это означает, что действительные координаты строки находятся в диапазоне от 0
до num_rows_res - 1
.
Если вы попытаетесь move()
или wmove()
за пределами окна,курсор на самом деле не будет двигаться;последующие printw()
или wprintw()
будут напечатаны в предыдущей позиции курсора.Если вы попытаетесь mvprintw()
или mvwprintw()
, весь вызов потерпит неудачу в момент попытки переместить курсор, и поэтому он вообще ничего не напечатает.
Вот полная демонстрация (простопечать в stdscr
, которая имеет LINES
строки и COLS
столбцы):
#include <stdio.h>
#include <curses.h>
int main(void)
{
int ch;
initscr();
noecho();
cbreak();
/* This succeeds: */
mvprintw(1, 1, ">>>");
/* This tries to move outside the window, and fails before printing: */
mvprintw(LINES, COLS / 2, "doesn't print at all");
/* This tries to move outside the window, and fails: */
move(LINES, COLS / 2);
/* This prints at the cursor (which hasn't successfully moved yet): */
printw("prints at current cursor");
/* This is inside the window, and works: */
mvprintw(LINES - 1, COLS / 2, "prints at bottom of screen");
refresh();
ch = getch();
endwin();
return 0;
}
(На самом деле функции возвращают результат; если вы проверите его, вы обнаружите, что он ERR
в случаях, которые терпят неудачу.)