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;
}
针对日期的一个简单用法,记录一下。