输入某年某月某日返回星期几(C语言标准库)


/*

输入某年某月某日,返回这天是星期几

比如2000年3月8日,按格式输入20200308

*/

//wday函数参数接受格式如:

//20000308

//此函数返回值如:"星期三"

#include<stdio.h>

#include<time.h>

#include<stdlib.h>

#include<string.h>

char* wday(char *date)

{

char *p=date;

char *wd[]=

{

"星期日",

"星期一","星期二",

"星期三","星期四",

"星期五","星期六",

"unknown"

};

struct mydate

{

int year;

char years[10];

int mon;

char months[5];

int mday;

char mdays[5];

}mydate;

strncpy(

mydate.years,date,4);

mydate.year=

atoi(mydate.years);

mydate.months[0]=

*(p+4);

mydate.months[1]=

*(p+5);

mydate.months[2]=

'\0';

mydate.mon=

atoi(mydate.months);

mydate.mdays[0]=

*(p+6);

mydate.mdays[1]=

*(p+7);

mydate.mdays[2]=

'\0';

mydate.mday=

atoi(mydate.mdays);

struct tm Timestr;

Timestr.tm_year=

mydate.year-1900;

Timestr.tm_mon=

mydate.mon-1;

Timestr.tm_mday=

mydate.mday;

Timestr.tm_hour=0;

Timestr.tm_min=0;

Timestr.tm_sec=1;

Timestr.tm_isdst=-1;

if(mktime(&Timestr)==-1)

return wd[7];

return wd[Timestr.tm_wday];

}

int main()

{

char wstr[12];

label:

fgets(wstr,12,stdin);

printf("%s是%s\n\n",wstr,wday(wstr));

goto label;

return 0;

}

原文链接:,转发请注明来源!