在初学c语言使用scanf函数时,我的举例程序如下:
#include<stdio.h>
int main()
{
int num1 = 0;
int num2 = 0;
int sum = 0;
scanf("%d%d", &num1, &num2);//取地址符号&
sum = num1 + num2;
printf("sum = %d\n", sum);
return 0;
}
会出现如下图中的错误:
出现错误的原因:scanf是C语言提供的,scanf_s不是标准C语言提供的,是VS编译器提供的,建议不使用scanf_s,因为若使用了代码就不具有跨平台性和可移植性,你换成这个VS平台使用的函数形式换到别的平台这个代码就出错了,
所以解决方式为根据他的提示:在程序第一行加入:
#define _CRT_SECURE_NO_WARNINGS 1
就可以看到正常运行:
实际上除了scanf,还有strcpy strlen strcat等等,都会如此,因为认为这些函数都是不安全的,所以高版本的VS默认他们不能使用,代替它们的是在这些函数后面加“_s”,如“scanf_s”,所有这些都在程序第一行加上:#define _CRT_SECURE_NO_WARNINGS 1
就可以正常运行。
想要一劳永逸解决这个问题:找到你的VS安装路径,打开其中的VC文件夹下的vcprojectitems下的newc++file.cpp,我的为:
打开添加一行“#define _CRT_SECURE_NO_WARNINGS 1”,然后保存。
(建议下载Notepad++这个软件,因为用记事本打开在保存时会出现“拒绝访问”,若弹出“是否要用管理员模式启动”点击是,然后重新打开,在保存就可以了)
再次在VS中添加源文件,打开首行就会有: