【发布时间】:2017-09-28 21:19:53
【问题描述】:
我正在开发一个函数,我从用户那里获取参数,找出那一周的第一天是什么,然后将整个星期打印给用户。
这是我到目前为止所做的:
#include <time.h>
#include <stdio.h>
void week(int day, int month, int year)
{
struct tm time;
char buffer[80];
int i;
time.tm_year = year - 1900;
time.tm_mon = month - 1;
time.tm_mday = day;
time_t rightTime = mktime(&time);
time.tm_wday = rightTime;
time.tm_wday = mktime(&time);
for (i = 0; i < 7; i++)
{
strftime(buffer, sizeof(buffer), "%A %d. %B %Y\n",&time);
printf(buffer);
time.tm_mday = time.tm_mday + 1;
time.tm_wday = time.tm_wday + 1;
}
}
然后我开始尝试使用代码来获取一周的第一天。我试图通过确定它是哪个工作日来获得一周的第一天,然后减去直到日期为星期一的所有天数。然后我可以从周一到周日开始向用户打印整个星期。 例如,如果 wday 是星期六(6):
if(rightTime == 6)
{
time.tm_mday = time.tm_mday - 6;
}
time.tm_wday = mktime(&time);
感觉仍然不正确,但我不知道如何找出给定一周的第一天,刷新所有信息,然后为用户打印出来。
如果日、月和年的参数例如为 20 4 2017,则输出正确:
Monday 17. April 2017
Tuesday 18. April 2017
Wednesday 19. April 2017
Thursday 20. April 2017
Friday 21. April 2017
Saturday 22. April 2017
Sunday 23. April 2017
感谢所有帮助!
【问题讨论】:
-
请不要养成将变量作为格式字符串传递的习惯——改用
printf("%s", buffer)——这会在某一天拯救你的皮肤。 (在这种情况下,您可以从字符串中删除换行符,只需puts(buffer)这也是安全的,并且可能更有效。)