首先:建立C语言程序项目
注意
:在建立项目时将源文件的后缀由.cpp,改为.c
![在这里插入图片描述](https://img-blog.csdnimg.cn/9c8a618478cc495fa2d0ff9d9663fcbd.png)
其次:scanf_s()前身——scanf()
注意
:有的C语言教材里用的scanf(),其实在目前Visual Studio版本中已经弃用了,用scanf_s()函数代替了。不加_s程序会报错。
最后:0x7A13E63C (ucrtbased.dll)处(位于 XINTE-3.exe 中)引发的异常: 0xC0000005: 写
注意
出现报错的原因是scanf_s输入时没有加参数,这是一个安全问题,因为我们在用scanf输入字符串的时候,编译器不知道我们给它安排的空间有多大,所以只要我们不停地写,它就能够不停地输入,这会造成输入的数据过大导致数据溢出的隐患(即输入过多的数据放在超过数组空间大小的其他地方),这就会有数据丢失的风险。
所以在vs2015之后,scanf因为这个安全问题被改成了scanf_s(这也是用scanf会报错的原因),从此之后,scanf_s在输入字符串的时候,是需要在数组地址后面再加一个参数作为限制输入大小的值。
解决方案:
提示:再加一个参数作为限制输入大小的值
scanf_s("%s", students[i].name, MAX_NAME_LENGTH); // 其中MAX_NAME_LENGTH是自定义的字符串长度