C 中的 Curses 函数,打印出默认消息并闪烁
Curses Functions in C,print out default message and blinking
在屏幕中央显示一条闪烁的消息。如果用户在命令行上提供消息,您的程序应该显示该消息,否则显示默认消息。使用睡眠功能在打印消息和擦除消息之间暂停程序。
这是我到目前为止所做的,我只能打印和闪烁消息是我输入的,但我不能打印默认消息。
#include <ncurses.h>
#include <string.h>
int main()
{
char mesg[50]="";
int row,col;
initscr();
scanf("%s",&mesg);
getmaxyx(stdscr,row,col);
for(int i=0;i<8;i++){
if(i%2==1)
standout();
mvprintw(row/2,col/2,"%s",mesg);
sleep(1);
if(i%2!=1)
standend();
mvprintw(row/2,col/2,"%s",mesg);
refresh();
}
getch();
endwin();
return 0;
}
谢谢大家的帮助!
将 main
定义为 int main(int argc, char *argv[])
(或 char **argv
)以访问命令行参数。假设 argc >= 1
,程序名将在 argv[0]
,如果 argc > 1
,命令行参数字符串将在 argv[1]
到 argv[argc - 1]
。 argv[argc]
将是一个空指针。
#include <ncurses.h>
#include <string.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
const char *mesg;
int row,col;
int startcol;
if (argc > 1) {
mesg = argv[1];
} else {
mesg = "Default message";
}
initscr();
getmaxyx(stdscr,row,col);
if (strlen(mesg) > col) {
startcol = 0;
} else {
startcol = (col - strlen(mesg)) / 2;
}
for(int i=0;i<8;i++){
if(i%2==1)
standout();
mvprintw(row/2,startcol,"%s",mesg);
sleep(1);
if(i%2!=1)
standend();
mvprintw(row/2,startcol,"%s",mesg);
refresh();
}
getch();
endwin();
}
在屏幕中央显示一条闪烁的消息。如果用户在命令行上提供消息,您的程序应该显示该消息,否则显示默认消息。使用睡眠功能在打印消息和擦除消息之间暂停程序。 这是我到目前为止所做的,我只能打印和闪烁消息是我输入的,但我不能打印默认消息。
#include <ncurses.h>
#include <string.h>
int main()
{
char mesg[50]="";
int row,col;
initscr();
scanf("%s",&mesg);
getmaxyx(stdscr,row,col);
for(int i=0;i<8;i++){
if(i%2==1)
standout();
mvprintw(row/2,col/2,"%s",mesg);
sleep(1);
if(i%2!=1)
standend();
mvprintw(row/2,col/2,"%s",mesg);
refresh();
}
getch();
endwin();
return 0;
}
谢谢大家的帮助!
将 main
定义为 int main(int argc, char *argv[])
(或 char **argv
)以访问命令行参数。假设 argc >= 1
,程序名将在 argv[0]
,如果 argc > 1
,命令行参数字符串将在 argv[1]
到 argv[argc - 1]
。 argv[argc]
将是一个空指针。
#include <ncurses.h>
#include <string.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
const char *mesg;
int row,col;
int startcol;
if (argc > 1) {
mesg = argv[1];
} else {
mesg = "Default message";
}
initscr();
getmaxyx(stdscr,row,col);
if (strlen(mesg) > col) {
startcol = 0;
} else {
startcol = (col - strlen(mesg)) / 2;
}
for(int i=0;i<8;i++){
if(i%2==1)
standout();
mvprintw(row/2,startcol,"%s",mesg);
sleep(1);
if(i%2!=1)
standend();
mvprintw(row/2,startcol,"%s",mesg);
refresh();
}
getch();
endwin();
}