解答VS提示性错误:warning C4996: 'scanf': This function or variable may be unsafe.

来源:互联网 发布:淘宝剑三升级代练 编辑:程序博客网 时间:2024/05/01 20:15

    我们在利用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>

然后再进行运行就没有上述错误了!


1 0
原创粉丝点击