[英]probleme with printw, ncurses
我需要使用printw(); 但它不起作用,它只是段错误。 我已经使用过initscr
和endwin
但是它没有任何改变。
void aff_battel(char **str)
{
int i;
int j;
char *str2;
if ((str2 = malloc(sizeof(*str) * 23)) == NULL)
return ;
str2 = "---------------------\n\0";
j = 0;
i = 0;
while (str[i] != NULL)
{
initscr();
printw("---------------------\n\0"); /* it doesn't work */
printw("%s", str2); /* here nether */
endwin();
i++;
}
}
知道我放了initsrc();
在循环的开始和结束时赢了,但它仍然没有给我印任何东西
void aff_battel(char **str)
{
int i;
int j;
j = 0;
i = 0;
while (str[i] != NULL)
{
printw("---------------------\n");
i++;
}
endwin();
}
正如Joachim Pileborg所说,在注释中, initscr()
应该在程序的开头,而endwin()
在结尾。
initscr()
设置一个内部屏幕字符映射, printw()
将写入其中。
要将屏幕地图复制到实际屏幕,您需要调用refresh()
。 没有它,您将看不到任何东西。
endwin()
清除屏幕并将终端重置为正常状态。
这是一个使用您的简化函数来演示ncurses函数的示例。 我已经使用getch()
使程序等待按键,然后退出。
注意:在此示例中,由于getch()
也会refresh()
,因此仍会显示不带refresh()
的文本。
#include <ncurses.h>
void aff_battel(char **str)
{
int i;
int j;
j = 0;
i = 0;
while (str[i] != NULL)
{
printw("---------------------\n");
i++;
}
refresh();
}
void main(int argc, char **argv)
{
initscr();
aff_battel(argv);
getch();
endwin();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.