用于调用的参数太少/写入位置时发生冲突/检测到无效的异常处理程序例程

   日期:2020-09-14     浏览:163    评论:0    
核心提示:用于调用的参数太少/写入位置时发生冲突/检测到无效的异常处理程序例程针对新人学C过程中可能遇到的一类问题我们在学习中经常遇到这种情况:#includevoid main(){ char note[100] = ""; scanf("%s", note, 100);//本行会报错提醒我们使用scanf_s代替scanf}很多带“_s”后缀的函数是为了让原版函数更安全,传入一个和参数有关的大小值,避免引用到不存在的元素,有时黑客可以利用原版的不安全性黑掉系统。

用于调用的参数太少/写入位置时发生冲突/检测到无效的异常处理程序例程

针对新人学C过程中可能遇到的一类问题

我们在学习中经常遇到这种情况:

#include<stdio.h>
void main()
{ 
	char note[100] = "";
	scanf("%s", note, 100);//本行会报错提醒我们使用scanf_s代替scanf
}

很多带“_s”后缀的函数是为了让原版函数更安全,传入一个和参数有关的大小值,避免引用到不存在的元素,有时黑客可以利用原版的不安全性黑掉系统。比如:char note[100];写成scanf_s("%s",note,100);或scanf_s("%s",note,sizeof(note));才是正确的,有这个参数100使准确性提高。

我列举了三个常见的异常

  • [ 1] 用于调用的参数太少
  • [ 2] 写入位置时发生冲突
  • [3 ] 检测到无效的异常处理程序例程

在处理这三个异常时可以观察代码是否有这样的错误:

//注释内是错误写法
scanf_s("%s", note,100);//缺少参数100 scanf_s("%s", note);

sprintf_s(temp, sizeof(temp) ,"\n收入\t%s\t\t%.2f\t\t%.2f", note, money, blance);
//缺失参数sizeof(temp)sprintf_s (temp, "\n收入\t%s\t\t%.2f\t\t%.2f", note, money, blance);

strcat_s(data,sizeof(data),temp);//同样缺失参数 strcat_s(data,temp);

希望对同为新手的你有所帮助。

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服