在使用scanf()函数时经常会遇到:
![](https://i-blog.csdnimg.cn/blog_migrate/b932c7f975f684a04002e8a360c97634.png)
怎么解决?
编译器报错中讲到的scanf_s()函数是VS编译器提供的,不是C语言自己的,在其他的编译器(如gcc,clang)下就没有scanf_s()的函数u,也不认识这个函数。
当你在代码中使用了scanf_s()函数,你的代码在其他编译器下就不能进行正确的编译,这就降低了代码的跨平台性(移植性),所以建议写代码时尽量使用标准C提供的功能和函数。
只需在
第一行(否则没有效果)输入:
#define _CRT_SECURE_NO_WARNINGS
或者只需在
第一行输入:
#define _CRT_SECURE_NO_WARNINGS 1
(赋了个值)
但是每次用时都要自己另加上此代码太过麻烦,有什么办法解决scanf()函数不安全因素的一劳永逸做法呢?
在电脑上下载个工具:everything
everything——本地搜索的工具(非常快)
安装好everything这个软件后在电脑上搜素一个文件:newc++file.cpp,
在其上右击选:“打开路径”,然后就可以看到:newc++file.cpp这个文件,
按住shift键不放的同时把这个文件拖拽到桌面上,这样原路径页面是没有这个文件的(否则相当于复制,没有编辑的必要了)然后在桌面上看到这个文件,右击点编辑,在第一行输入:#define _CRT_SECURE_NO_WARNINGS 1,保存,
按继续,然后就可以把此文件再拖拽到原路径下,注意
仍按住shift键不放,实现“剪切”的效果。(这是在没有管理权限的情况下编辑好并保存的做法)
这样就可以保证:
以后只要新建一个源文件(xxx.c)里面就有
#define _CRT_SECURE_NO_WARNINGS 1
这句代码,即以后使用scanf()函数就不会报不安全这个错误了。