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();
}