我们在利用VS进行C++编写调试的时候,提示错误或警告:警告1 warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.
由于VS内部的限制可能会提示你某些字符不安全,例如:printf(),scanf(),stricmp(),strcpy()!其实并不是你代码写错了,也不是C语言语法不正确,只是微软公司对VS进行的特殊限制,当我们利用其它编译器进行改代码的编写都是没有问题的,编译都可以顺利通过。
这时有可能编译不通过,那么现在经过我查阅资料现在提供链各个解决方案如下:
1.错误在提示的时候,要求我们定义一个宏:(也就是这句话:To disable deprecation, use _CRT_SECURE_NO_WARNINGS.) 那我们就顺应其要求,定义这个宏:将字符串“_CRT_SECURE_NO_WARNINGS”(不带双引号)拷贝到代码的最上方:
最佳适应法:
F2(50)->F1(100)
分配
A(30)
后:
F2(20)->F1(100)
分配
B(70)
后:
F2(20)->F1(30)
分配
C(50):
分配失败
(图示省略)
最差适应法:
F1(100)->F2(50)
分配
A(30)
后:
F1(70)->F2(50)
分配
B(70)
后:
F2(50)
分配
C(50)
后
:
无空闲区
(图示省略)
然后#deifne _CRT_SECURE_NO_WARNINGS就行了。<span style="font-size:18px;"><span style="color:#ff0000;">#define _CRT_SECURE_NO_WARNINGS</span>
#include <stdio.h>
int main()
{
int a = 0;
char c =' ';
int b = 0;
printf("Please input a");
scanf("%d",a);
getchar();
printf("Please input char c");
scanf("%c",c);
printf("Please input b");
scanf("%d",b);
switch (c)
{
case '+':
printf("a+b=%d\n",a+b);
break;
case '-':
printf("a-b=%d\n",a-b);
break;
case '*':
printf("a*b=%d\n",a*b);
break;
case '/':
printf("a/b=%d\n",a/b);
break;
default:
printf("The char c you've input is wrong,please input again!");
}
}</span>
或者方法2:强制屏蔽掉编号为4996的错误,将这一段代码加入到你的源码中。
代码如下
<span style="font-size:18px;">#include <stdio.h>
<span style="color:#ff0000;">#pragma warning(disable:4996)</span>
int main()
{
int a = 0;
char c =' ';
int b = 0;
printf("Please input a");
scanf("%d",a);
getchar();
printf("Please input char c");
scanf("%c",c);
printf("Please input b");
scanf("%d",b);
switch (c)
{
case '+':
printf("a+b=%d\n",a+b);
break;
case '-':
printf("a-b=%d\n",a-b);
break;
case '*':
printf("a*b=%d\n",a*b);
break;
case '/':
printf("a/b=%d\n",a/b);
break;
default:
printf("The char c you've input is wrong,please input again!");
}
}</span>
然后再进行运行就没有上述错误了!