ncurses - printw () не работает с длинными строками (C) - PullRequest
0 голосов
/ 02 ноября 2018

Я пытаюсь напечатать длинную строку с printw(), но она печатает только некоторые символы. Это похоже на то, что эта функция позволяет печатать только максимальное количество символов.

Вот часть моего кода:

 ...
 move(3,0);
 printw(result_2);
 sleep(1);
 ...

result_2 имеет очень длинную строку, и я знаю, что она имеет правильную длинную строку.

Строка, которую я пытаюсь напечатать, содержит всю информацию о текстовом файле.

Я пытался использовать другие функции, такие как addstr (), но у меня возникла та же проблема. Есть ли способ напечатать длинные строки с помощью ncurses?

Вот что у меня в строке:

user: asdasdasd
user: holaaaa
user: asdsad
user: aw22
user: 2
user: 2
user: 2
user: 2
user: 22
user: 2
user: 2
user: 2
user: asdasd
user: holaaa
user: porfa
user: si
user: suuuuuuuuuuuuuuuuuu
user: no
user: no
user: lel
user: lkajsdkjasdkjasdkjasd

Спасибо!

1 Ответ

0 голосов
/ 02 ноября 2018

Я думаю, что вы, вероятно, попали в нижнюю часть экрана. Ncurses не будет прокручивать (или разрешать прокручивать терминал), если вы не позвонили:

scrollok(stdscr, TRUE);

Так что, вероятно, выход достигает нижней части окна и останавливается там.

Возможно, вы захотите взглянуть на функцию curses idlok.

Однако это может не дать того, что вы действительно ищете. Ncurses не поддерживает буфер прокрутки; он сохраняет только то, что на самом деле отображается на экране. Если вы хотите реализовать приложение CLI, способное прокручивать длинные тексты, вам придется самостоятельно реализовать логику прокрутки или использовать одну из библиотек виджетов, реализованных поверх ncurses (например, CDK ) .

...