c语言中变量“m”周围的堆栈已损坏是怎么回事啊?

输入一个年份和月份,输出这个月的天数。
#include<stdio.h>
int main()
{
int y;
char m;
printf("输入年、月份:");
scanf_s("%d%d", &m, &y);
switch (m)
{
case '1': printf("31\n"); break;
case'2':
if ((y % 4 == 0 && y % 100 != 0) || (y % 400))
printf("29\n");
else
printf("28\n"); break;
case '3': printf("31\n"); break;
case '4': printf("30\n"); break;
case '5': printf("31\n"); break;
case '6': printf("30\n"); break;
case '7': printf("31\n"); break;
case '8': printf("31\n"); break;
case '9': printf("30\n"); break;
case '10': printf("31\n"); break;
case '11': printf("30\n"); break;
case '12': printf("31\n"); break;
default:printf("错误!\n");
}
return 0;
}

scanf_s("%c%d", &m, &y);