sscanf()函数用法:将字符串日期直接转为所需的年月日整数格式。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
int dayOfYear(char *date) {
int year, month, day;
int daysInMonth[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
// 解析日期字符串
sscanf(date, "%d-%d-%d", &year, &month, &day);
// 如果是闰年,2月有29天
if (isLeapYear(year)) {
daysInMonth[1] = 29;
}
// 计算该日期是当年的第几天
int dayOfYear = day;
for (int i = 0; i < month - 1; i++) {
dayOfYear += daysInMonth[i];
}
return dayOfYear;
}
int main() {
char date[10010];
scanf("%s",&date);
int result = dayOfYear(date);
printf("%d", result);
return 0;
}
针对日期的一个简单用法,记录一下。