C语言-scanf问题 scanf和scanf_s的区别

测试环境:Windows 7 旗舰版(7600)
测试软件:VS 2010 SP1旗舰版

如果这个环境中使用scanf,会提示如下:

1>c:\users\administrator\documents\visual studio 2010\projects\open\open\open.cpp(7): warning C4996: '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.
1> c:\program files\microsoft visual studio 10.0\vc\include\stdio.h(304) : 参见“scanf”的声明

谁能告诉下,这俩函数的区别呢?

#include <stdio.h>
int main (void)
{
char zm,a;
printf("请输入一个字母:");
scanf_s("%c",&zm,1);
if ( zm >= 65 && zm <= 90)
{
a = zm +32;
printf("您输入的是大写字母,现在给你转换出小写字母%c",a);
}
else
{
printf("您输入的小写字母,无需转换。它是%c",zm);
}
}

这样就可以正常执行。另外我想问下scanf_s("%c",&zm,1);中的1代表什么意思。如果改成其他数字,有什么影响呢?

scanf这个是标准输入输出里面的函数哦,它是标准C(ANSI C标准)定义的接口函数,WINDOW,LINUX/UNIX,MAC都提供这个接口函数,但是scanf_s这个东西,嘿嘿,万恶的微软,你懂的,你用了你就绑死在WINDOW上了
也许scanf真的不安全,但是和可移植性相比呢?而且,scanf_s这个东西安全?
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-13
1好像是用来控制你只能输入字母的个数吧,只能输入一个字母
第2个回答  2019-01-06
因为vs系列的是c++编译器,cin比scanf之类的更安全,如果你纯c编程用scanf在这个环境下,自然要有警告,办法是用cin,或者换c的编译器。
相似回答