在scanf_s中,超出边界的数去哪了

马上注册结交更多好友,享用哽多功能^_^

您需要 才可以下载或查看没有帐号?

scanf()输入时不会进行边界检查而scanf_s()输入时会进行边界检查,更安全像VS中就要求使用scanf_s()进行输入

报错:scanf_s函数报错:没有为格式字符串传递足够的参数

解决办法:在使用%c和%s读入字符或字符串时应在地址参数后附加一个缓冲区边界值。 

总结;就会提示你没有为格式字符串傳递足够的参数
scanf()不会检查输入边界,可能造成数据溢出
scanf()函数是标准C中提供的标准输入函数,用以用户输入数据
scanf_s()函数是Microsoft公司VS开发工具提供的一个功能相同的安全标准输入函数从vc++2005开始,VS系统提供了scanf_s()在调用该函数时,必须提供一个数字以表明最多读取多少位字符

上面的程序有点复杂;下面来一个简单点的例子:

上面的代码当你输入字符串的时候会报错:没有为格式字符串传递足够的参数

解决办法:在使用%c囷%s读入字符或字符串时,应在地址参数后附加一个缓冲区边界值 

我要回帖

 

随机推荐