C语言引发了未处理的异常: 写入访问权限冲突。还没学指针,想知道应该怎么解决?

引发了未处理的异常: 读取访问权限冲突。
date 是 0x11108FB。。这是VS2019上调试显示的错误类型。

#include<stdio.h>
#define print printf
int isLeap(int year);
int isLegal(int date[]);
int daysInMonth(int day, int month);
void dateInput(int date[]);
int isLeap(int year)
{
    if ((year - 2000) % 4 == 0)
        return 1;
    else
        return 0;
}
int isLegal(int date[3])
{
    int i = 0;
    if (date[i + 1] >= 1 && date[i + 1] <= 12)
        if (date[i + 2] <= daysInMonth(date[i + 1], date[i + 2]) && date[i + 2] >= 1)
            return 1;
        else
            return 0;
    else
        return 0;
}
int daysInMonth(int year, int month)
{
    if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
        return 31;
    else if (month == 4 || month == 6 || month == 9 || month == 11)
        return 30;
    else if (month == 2)
        if (isLeap(year) == 1)
            return 29;
        else if (isLeap(year) == 0)
            return 28;
}
void dateInput(int date[3])
{
    int a, b;
    a = isLegal(date);
    if (a == 0)
    {
        print("您输入的日期不合法,请重新输入:\n");
        for (b = 0;b < 3;b++)
            scanf_s("%d", &date[b]);
    }
}
int main(void)
{
    int date[3] = { 0 }, nextdate[3] = { 0 }, a, b, c, d, e, f, year, month, day, sum, sum1, sum2;
    print("请输入今天的日期,如‘2001 3 27’:\n");
    for (f = 0;f < 3;f++)
        scanf_s("%d", &date[f]);
    dateInput(date[0], date[1], date[2]);
    year = date[0];
    month = date[1];
    a = daysInMonth(year, month);
    b = isLeap(year);
    if (b == 0)
        print("今年不是闰年\n");
    else if (b == 1)
        print("今年是闰年\n");
    print("这个月有%d天\n", a);
    print("请输入下一次您生日的日期:(格式同上)\n");
    scanf_s("%d%d%d", &nextdate[0], &nextdate[1], &nextdate[2]);
    dateInput(nextdate[0], nextdate[1], nextdate[2]);
    if (nextdate[0] == date[0])
    {
        if (nextdate[1] < date[1] || nextdate[1] == date[1] && nextdate[2] < date[2])
        {
            print("您输入的日期不合法,请重新输入:\n");
            scanf_s("%d%d%d", &nextdate[0], &nextdate[1], &nextdate[2]);
        }
        c = a - date[2];
        for (sum = c, d = date[1] + 1; d <= nextdate[1] - 1; d++)
            sum += daysInMonth(year, d);
        sum += nextdate[2];
    }
    else if (nextdate[0] > date[0])
    {
        c = a - date[2];
        for (sum1 = c, d = date[1] + 1; d <= 12; d++)
            sum1 += daysInMonth(year, d);
        for (sum2 = 0, e = 1;e <= nextdate[1] - 1;e++)
            sum2 += daysInMonth(year + 1, e);
        sum = sum1 + sum2 + nextdate[2];
    }
    else
    {
        print("您输入的日期不合法,请重新输入:\n");
        scanf_s("%d%d%d", &nextdate[0], &nextdate[1], &nextdate[2]);
    }
    print("从今天到下一次生日还有%d天\n", sum);
}


img

isLegal(int data[3])改成isLegal(int data[])

dateInput(date[0], date[1], date[2]);

但这个函数定义是:
void dateInput(int date[3])
你咋能编译通过的呢?

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^