用C语言获取星期几(可以详细解释一下这段代码吗?)

/*mktimeexample:weekdaycalculator*/#include<stdio.h>/*printf,scanf*/#include<time.h>/... /* mktime example: weekday calculator */
#include <stdio.h> /* printf, scanf */
#include <time.h> /* time_t, struct tm, time, mktime */

int main ()
{
time_t rawtime; // time_t 用来声明什么?还是其他?
struct tm * timeinfo; // 指针吗
int year, month ,day;
const char * weekday[] = { "Sunday", "Monday",
"Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday"};

/* prompt user for date */
printf ("Enter year: "); fflush(stdout); scanf ("%d",&year);
printf ("Enter month: "); fflush(stdout); scanf ("%d",&month);
printf ("Enter day: "); fflush(stdout); scanf ("%d",&day);

/* get current timeinfo and modify it to the user's choice */
time ( &rawtime ); // 主要是从这里开始
timeinfo = localtime ( &rawtime );
timeinfo->tm_year = year - 1900; // 为什么要减去1900 ?
timeinfo->tm_mon = month - 1;
timeinfo->tm_mday = day; // 主要是这一大段函数的详细解释

/* call mktime: timeinfo->tm_wday will be set */
mktime ( timeinfo ); // 还有这句函数什么意思

printf ("That day is a %s.\n", weekday[timeinfo->tm_wday]); // 通过指针 get 星期几?

return 0;
}
展开
 我来答
身也我几摸
推荐于2017-09-30 · 超过10用户采纳过TA的回答
知道答主
回答量:27
采纳率:0%
帮助的人:25.3万
展开全部
time_t是一个存储时间信息的long int
time(&rawtime) 将系统时间存入rawtime这个time_t中

struct tm *timeinfo 里tm是一个存时间信息的结构体 timeinfo是指向一个这个结构体的指针
timeinfo=localtime(&rawtime) 将之前time()得到的信息转存为struct tm内容
timeinfo->tm_year = year - 1900 是因为计数时间从1900.1.1开始 下同

mktime(timeinfo)是将已经变为struct tm的时间信息转换为之前的long int 秒数
timeinfo->tm_wday得到从0到6分别代表周日至周六

参考资料:
http://baike.baidu.com/view/1741851.htm?fr=aladdin#4_1
http://baike.baidu.com/view/5755484.htm?fr=aladdin
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式