关于#c语言#的问题:用户输入当前日期,与已经以数组形式录入的(商品日期+保质期)作比较,输出过期商品名称

用户输入当前日期,与已经以数组形式录入的(商品日期+保质期)作比较,输出过期商品名称

#include <stdio.h>
#include <string.h>

// 定义商品结构体
struct Product {
    char name[50];          // 商品名称
    char expiry_date[11];   // 商品保质期
};

// 定义一个函数,比较输入日期和商品过期日期,并输出过期商品名称
void compare_date(char date[]) {
    // 模拟商品数组
    struct Product products[] = {
        {"可乐", "2021-07-31"},
        {"奶酪", "2021-08-10"},
        {"面包", "2021-08-15"}
    };
    int length = sizeof(products) / sizeof(products[0]);

    printf("以下商品已过期:\n");

    for (int i = 0; i < length; i++) {
        // 按照日期字符串格式将商品保质期转化为整型
        int expiry_year, expiry_month, expiry_day;
        sscanf(products[i].expiry_date, "%4d-%2d-%2d", &expiry_year, &expiry_month, &expiry_day);

        // 按照日期字符串格式将用户输入的日期转化为整型
        int input_year, input_month, input_day;
        sscanf(date, "%4d-%2d-%2d", &input_year, &input_month, &input_day);

        // 将日期转化为天数进行比较
        int expiry_days = expiry_year * 365 + expiry_month * 30 + expiry_day;
        int input_days = input_year * 365 + input_month * 30 + input_day;

        // 如果输入日期已经超过商品保质期,输出商品名称
        if (input_days > expiry_days) {
            printf("%s\n", products[i].name);
        }
    }
}

int main() {
    char date[11];
    printf("请输入当前日期(格式为YYYY-MM-DD):\n");
    scanf("%s", date);

    compare_date(date);

    return 0;
}