caculatebithday.c
来自「这是一个在UNIX 下开发C 程序时候, 计算某年某月某日,计算你的生日日期。」· C语言 代码 · 共 158 行
C
158 行
/************************************************************************/
/* */
/* 僾儘僙僗柤丗 嵨偺寁嶼 丂丂丂 丂*/
/* 娭 悢 柤丗 嵨偺寁嶼丂丂丂丂 */
/* 婡擻奣梫 丗 嵨偺寁嶼偵偮偄偰丂丂丂丂丂丂 */
/* 曉媝抣 丗 0 : 惓忢廔椆 */
/* 1 : 堎忢廔椆 */
/* 拲堄帠崁 丗 僷儔儊儞僞偑擖椡偡傞側偗傟偽側傜側偄 */
/* */
/* 怴婯嶌惉幰丗妿巙暉 */
/* 怴婯嶌惉擔丗2005擭05寧30擔 */
/* 僶乕僕儑儞丗Ver1.1.0 */
/* 廋惓幰丗妿巙暉 */
/* 廋惓擔丗2005擭06寧23擔 */
/* 僶乕僕儑儞丗Ver1.1.3 */
/* */
/************************************************************************/
/*----------------------------------------------------------------------*/
/* 僀儞僋儖乕僪 */
/*----------------------------------------------------------------------*/
#include "caculateBithday.h"
int main(int argc, char *argv[])
{
static struct tm t_birth; /* 抋惗擔偵偮偄偰擔晅乛帪娫峔憿懱 */
static struct tm t_now; /* 尰嵼擔晅乛帪娫峔憿懱 */
char localTimeBuffer[128];
char nowTimeBuffer[128];
struct tm t_nowtime;
time_t nowtime;
time_t birthtm;
time_t nowtm;
int i_ageYear;
int i;
double elapsed_time;
char message[50];
char pc_argyear[5];
char pc_argmonth[3];
char pc_argday[3];
/* 弶婜壔 */
memset(&com_birthdate, 0, sizeof(combirth));
memset(&com_nowdate, 0, sizeof(comnow));
memset(&t_birth, 0, sizeof(t_birth));
memset(&t_now, 0, sizeof(t_now));
memset(localTimeBuffer,0,sizeof(localTimeBuffer));
memset(nowTimeBuffer,0,sizeof(nowTimeBuffer));
i_ageYear=0;
i=0;
elapsed_time=0;
memset(message,0,sizeof(message));
memset(pc_argyear,0,sizeof(pc_argyear));
memset(pc_argmonth,0,sizeof(pc_argmonth));
memset(pc_argday,0,sizeof(pc_argday));
/* 堷悢偺僠僃僢僋張棟 */
if(argc==2){
if(strlen(argv[1])==8){
/* 擭偺僠僃僢僋張棟 */
memcpy(pc_argyear,argv[1],4);
if(atol(pc_argyear)<1900 || atol(pc_argyear)>2005){
printf("\nError! please check your year.\n");
exit(1);
}
/* 寧偺僠僃僢僋張棟 */
memcpy(pc_argmonth,argv[1]+4,2);
if(atol(pc_argmonth)<1 || atol(pc_argmonth)>12){
printf("\nError! please check your month.\n");
exit(1);
}else{
if(atol(pc_argmonth)==2){
/* 擇寧拞丄擔偺僠僃僢僋張棟 */
memcpy(pc_argday,argv[1]+6,2);
if(atol(pc_argday)<1 || atol(pc_argday)>29){
printf("\nError! please check your day.\n");
exit(1);
}
}
if(atol(pc_argmonth)==1 || atol(pc_argmonth)==3
|| atol(pc_argmonth)==5 || atol(pc_argmonth)==7
|| atol(pc_argmonth)==8 || atol(pc_argmonth)==10
|| atol(pc_argmonth)==12){
/* 擔偺僠僃僢僋張棟 */
memcpy(pc_argday,argv[1]+6,2);
if(atol(pc_argday)<1 || atol(pc_argday)>31){
printf("\nError! please check your day.\n");
exit(1);
}
}
if(atol(pc_argmonth)==4 || atol(pc_argmonth)==6
|| atol(pc_argmonth)==9 || atol(pc_argmonth)==11){
/* 擔偺僠僃僢僋張棟 */
memcpy(pc_argday,argv[1]+6,2);
if(atol(pc_argday)<1 || atol(pc_argday)>30){
printf("\nError! please check your day.\n");
exit(1);
}
}
}
}else{
printf("\nError! your argument is wrong.\n");
exit(1);
}
}else{
printf("\nError! please input your argument.\n");
exit(1);
}
/* 抋惗擔偺庢摼偡傞 */
strcpy(com_birthdate.pc_birthdate,argv[1]);
memcpy(com_birthdate.pc_year,com_birthdate.pc_birthdate,4);
memcpy(com_birthdate.pc_month,com_birthdate.pc_birthdate+4,2);
memcpy(com_birthdate.pc_day,com_birthdate.pc_birthdate+6,2);
t_birth.tm_year=atoi(com_birthdate.pc_year);
t_birth.tm_mon=atoi(com_birthdate.pc_month);
t_birth.tm_mday=atoi(com_birthdate.pc_day);
//尰嵼帪娫偺庢摼偡傞
time(&nowtime);
t_nowtime=*localtime(&nowtime);
//帪娫偺奿擺YYYYMMDD
strftime(localTimeBuffer,128,"%Y%m%d\n",&t_nowtime);
/* 奿擺屻 */
strcpy(nowTimeBuffer,localTimeBuffer);
memcpy(com_nowdate.pc_year,nowTimeBuffer,4);
memcpy(com_nowdate.pc_month,nowTimeBuffer+4,2);
memcpy(com_nowdate.pc_day,nowTimeBuffer+6,2);
t_now.tm_year=atoi(com_nowdate.pc_year);
t_now.tm_mon=atoi(com_nowdate.pc_month);
t_now.tm_mday=atoi(com_nowdate.pc_day);
//擭傪斾妑偡傞
i_ageYear=t_now.tm_year-t_birth.tm_year;
if(t_now.tm_mon<t_birth.tm_mon){
//嵎傪媮傔傞
i=t_now.tm_year-1;
t_now.tm_year=t_now.tm_year-1900;
t_birth.tm_year=i-1900;
nowtm=mktime(&t_now);
birthtm=mktime(&t_birth);
//偙傟娭悢偺曉媝抣偼昩偱偡
elapsed_time=difftime(nowtm,birthtm);
//堦擔拞丄86400昩偑偁傞
if((elapsed_time/86400)<365/2){
i_ageYear-=1;
}
}
sprintf(message,"\n乽傛偆偙偦乿偁側偨偼 %d 嵨偱偡両\n",i_ageYear);
printf("%s",message);
//惓忢廔椆
return 0;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?