加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何确保vfprintf具有适当数量的参数?

发布时间:2020-12-16 09:37:03 所属栏目:百科 来源:网络整理
导读:我在C中有一个变量参数函数,看起来大致如下: void log(const char * format,...) { va_list args; va_start(args,format); vfprintf( stderr,format,args ); va_end(args); exit(1);} 我可以这样通过callilng崩溃我的应用程序, log(“%s%d”,1); 因为函数
我在C中有一个变量参数函数,看起来大致如下:


void log(const char * format,...) {

  va_list args;
  va_start(args,format);
  vfprintf( stderr,format,args );
  va_end(args);
  exit(1);
}

我可以这样通过callilng崩溃我的应用程序,

log(“%s%d”,1);

因为函数缺少一个参数.有没有办法确定运行时缺少参数?

解决方法

我不相信会有任何标准机制来确定在运行时.格式说明符后面的参数只是堆栈上的值.例如,如果格式说明符指示接下来是4字节整数,则无法知道堆栈中的下4个字节是否是整数,或者只是前一次调用中堆栈上发生的任何事件.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读