int main()
{
int a;
char l1[10];
scanf_s("%s", l1);
printf("%s", l1);
return 0;
}
上边的简单代码竟然报错,查询了以后发现是scanf_s函数少加了一个检查边界的参数,改为下图
int main()
{
int a;
char l1[10];
scanf_s("%s", l1,sizeof(l1));
printf("%s", l1);
return 0;
}
后面我对这个参数产生了兴趣,如果这个参数改为大于这个数组或者小于这个数组会不会发生问题呢
首先改成20,使其大于原数组,输入15个a,没有报错。
然后将参数改为5,输入大于5的数量a,出现如下结果,可以发现赋值失败,总结要想赋值成功输入的参数数量必须小于等于scanf_s的第三个参数大小