在使用VS编译器学习C语言的时候,很多小白第一次使用scanf时都会发现编译器会报错,如图所示:
'scanf':This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
这句话翻译过来的意思是
'scanf':此函数或变量可能不安全。考虑改用scanf_s。要禁用弃用,请使用use _CRT_SECURE_NO_WARNINGS. 有关详细信息,请参阅联机帮助。
这里谈一谈两种解决方案:
方案一:把scanf 改成 scanf_s
把scanf 改成 scanf_s 确实能解决vs编译器报错问题
但scanf_s 是vs编译器提供的,而不是C语言提供的,如果使用scanf_s 可能会造成写的代码只能在vs编译器上使用,在其他编译器上无法被编译。所以这里不建议使用,如果非要使用请研究scanf_s 和 scanf 的使用区别。
方案二:把#define _CRT_SECURE_NO_WARNINGS 1 放在源文件的第一行
在源文件(.c文件的)第一行输入#define _CRT_SECURE_NO_WARNINGS 1 阻止vs编译系统报错,并且不需要使用scanf_s,这样写出来的代码可以更好地在别的编译器上运行。
(一定要在第一行!!!)
那么问题来了,如果每次用到scanf都要输入这行代码会很麻烦。如何一劳永逸在每次创建.c文件时让编译器默认带上这句话呢?
首先,visual studio中有一个文件:newc++file.cpp
然后拷贝到桌面一份(不要把文件路径丢了)
在桌面把这个文件用记事本打开
(刚更新的win11,记事本变成了notepad)
在这个文件中加入#define _CRT_SECURE_NO_WARNINGS 1
然后保存
保存后替换掉原文件夹中的newc++file.cpp
以后只要在VS编译器中创建的源文件都会默认包含这句话,scanf报错的问题就被解决啦!
(为什么不直接在原文件中的newc++file.cpp加入而是在桌面?是因为有可能在文件夹中没有权限更改newc++file.cpp的内容。)
如果这篇文章对你有帮助,请点赞收藏加关注鼓励一下(*^▽^*)
有疑问也要在评论区告诉我哦!
后续会给大家带来更多干货和技巧ヾ(◍°∇°◍)ノ゙
ღ( ´・ᴗ・` )比心