用全局变量编程模拟显示一个数字时钟
1个回答
展开全部
为什么一定要全局变量。。。。
给你一个使用线程在linux下利用ncurses写的一个显示本地时间的代码
#include <ncurses.h>
#include <unistd.h>
#include <time.h>
#include <string.h>
#include <stdlib.h>
#include <pthread.h>
#include <errno.h>
time_t t;
void error_quit(char *msg)
{
perror(msg);
exit(1);
}
void *normal_quit(void *win)
{
while(getchar()!='q')
continue;
delwin((WINDOW *)win);
endwin();
echo();
printf("Exit. . .\n");
printf("\nExit Clock Now. . .\n");
exit(0);
}
int main(void)
{
int x,y;
//time_t t;
char buf[30];
pthread_t thread;
WINDOW *win;
initscr();
curs_set(0);
noecho();
if(has_colors())
{
start_color();
use_default_colors();
init_pair(1,COLOR_CYAN,-1);
}
getmaxyx(stdscr,y,x);
if((win=newwin(5,40,y/2-5/2,x/2-40/2))==NULL)
error_quit("Create New Window Error!");
refresh();
box(win,0,0);
wrefresh(win);
getmaxyx(win,y,x);
if(pthread_create(&thread,NULL,normal_quit,win)==-1)
error_quit("Create thread Error!");
wattron(win,COLOR_PAIR(1));
while(1)
{
t=time(NULL);
snprintf(buf,strlen(ctime(&t)),"%s",ctime(&t));
mvwprintw(win,y/2,x/2-(strlen(buf)+1)/2,buf/*ctime(&t)*/);
//mvwprintw(win,y/2,x-1,"%c",'|');
wrefresh(win);
sleep(1);
}
}
显示的效果如图
更多追问追答
追问
这些我没有
全局变量是题目的要求
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询