报错原因
当我们在VS编译器中使用scanf函数时,会报错,代码运行不起来,如图:
这样的程序就会报以下错误:
scanf’: This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.
含义就是这个函数可能不安全,考虑使用scanf_s来替换scanf,如果要让编译器不报错,可以使用_CRT_SECURE_NO_WARNINGS. 来取消报错。
那既然VS说使用scanf_s来替换scanf,那我们要不要使用scanf_s呢?答案是并不推荐使用它,因为C语言标准只提供了scanf函数,并没有提供scanf_s,scanf_s只是VS提供的函数,如果换了一个编译器很可能就会报错,这样会导致代码的可移植性降低,也会给个人带来不好的习惯,所以并不推荐使用scanf_s来替换scanf
解决方法
1.简便解决方法
那我们怎么才能使用scanf而不报错呢,只需要在整个c文件的第一行写上#define _CRT_SECURE_NO_WARNINGS 就可以了,后面那段英文就是use后的英文,可以复制过去,我们重新运行那个代码的结果如下:
这次VS就没有报错,成功运行了
2.长期解决方法
但是问题又来了,每次都要进行这个操作会不会很麻烦,能不能进行简化呢,当然可以,我们只需要想办法让每次创建的C语言文件自动在第一行添加上
#define _CRT_SECURE_NO_WARNINGS 这句话即可
要实现这样的操作我们就要知道,其实在VS上新建.c .cpp文件时,都是拷贝一个文件,名字叫newc++file.cpp,如果在这个文件的第一行加入那句话,就可以实现新建的.c .cpp文件中都有那句话了
- 首先在电脑上下载一个everything工具,下载链接为:https://www.voidtools.com/zh-cn/downloads/
- 在everything工具中搜索newc++file.cpp,搜索到后右击它,选择打开文件的位置
- 此时有两种可能:
(1)右击该文件,在打开方式中,选择用记事本打开,将那句话添加进去,最后保存即可
(2)按照(1)的步骤,到最后一步发现无法保存,可能在该路径下权限不足,可以复制该文件到桌面上,注意不要关闭路径,然后重复(1)的操作,就可以发现可以保存了,最后再将桌面上已经更改的文件复制回原路径替换即可,如果关闭了路径,就按照2的方法将路径打开