当前位置: 首页 > news >正文

iis网站视频无法播放国家职业资格证书网站

iis网站视频无法播放,国家职业资格证书网站,中国航空技术北京有限公司,网站建设摊销年限最新规定问题描述 刚刚写一个用AT指令透传相关的函数#xff0c;需要用到sprintf()‌拼接字符串。 结果发现sprintf()‌拼接出来的内容是错误的#xff0c;简化后的代码如下#xff1a; const char AT_CIPSEND_FIX_LENGTH_HEADER[11] ATCIPSEND; // 错误的#xff0…问题描述 刚刚写一个用AT指令透传相关的函数需要用到sprintf()‌拼接字符串。 结果发现sprintf()‌拼接出来的内容是错误的简化后的代码如下 const char AT_CIPSEND_FIX_LENGTH_HEADER[11] ATCIPSEND; // 错误的 const char AT[] AT\r\n;void ESP8285_CipSend_FixLength(char* data, uint8_t length) {static char AT_CIPSEND_FIX_LENGTH_FRALME[16] {0};sprintf(AT_CIPSEND_FIX_LENGTH_FRALME, %s, AT_CIPSEND_FIX_LENGTH_HEADER); }简化后的代码其实就是把AT_CIPSEND_FIX_LENGTH_HEADER的内容打印到AT_CIPSEND_FIX_LENGTH_FRALME里面结果一看AT_CIPSEND_FIX_LENGTH_FRALME里面出现了多余的内容。 很显然多余的内容就是AT_CIPSEND_FIX_LENGTH_HEADER字符串后面的内容即AT字符串的内容。 问题原因 问题的原因其实很简单AT_CIPSEND_FIX_LENGTH_HEADER字符串长度是11位的没有把作为字符串结尾的\0算进去 因此在用sprintf()‌的时候没有正确的找到字符串的结尾把内存后面AT字符串的结尾当成字符串的结尾了所以spinrtf()‌的输出结果是两个字符串的拼接 正确改法1 可以改写成如下 const char AT_CIPSEND_FIX_LENGTH_HEADER[12] ATCIPSEND; // 指定长度为12 const char AT[] AT\r\n; void ESP8285_CipSend_FixLength(char* data, uint8_t length) {static char AT_CIPSEND_FIX_LENGTH_FRALME[16] {0};sprintf(AT_CIPSEND_FIX_LENGTH_FRALME, %s, AT_CIPSEND_FIX_LENGTH_HEADER); }正确改法2 也可以直接不指定长度改写如下 const char AT_CIPSEND_FIX_LENGTH_HEADER[] ATCIPSEND; // 不指定长度 const char AT[] AT\r\n;void ESP8285_CipSend_FixLength(char* data, uint8_t length) {static char AT_CIPSEND_FIX_LENGTH_FRALME[16] {0};sprintf(AT_CIPSEND_FIX_LENGTH_FRALME, %s, AT_CIPSEND_FIX_LENGTH_HEADER); }错误改法 但这个问题很容易被掩盖因为像如下这么写结果可能也是对的取消掉const长度是11但其实是错误的在某些情况下会出错 char AT_CIPSEND_FIX_LENGTH_HEADER[11] ATCIPSEND; // 错误的 const char AT[] AT\r\n;void ESP8285_CipSend_FixLength(char* data, uint8_t length) {static char AT_CIPSEND_FIX_LENGTH_FRALME[16] {0};sprintf(AT_CIPSEND_FIX_LENGTH_FRALME, %s, AT_CIPSEND_FIX_LENGTH_HEADER); }在之前的写法中两个字符串都是常量在常量存储区存储位置是连续的。 如果把第一个字符串的const修饰去掉那么AT_CIPSEND_FIX_LENGTH_HEADER在全局变量存储区会被加载到内存中而AT字符串则在常量存储区这时候两个变量就不是连续的了因此不会出现“spinrtf()‌的输出结果是两个字符串的拼接”的情况了。 在这种情况下sprintf()‌的输出结果就取决于什么时候碰到\0了。 所以使用sprintf()‌有缓冲区溢出的风险可以使用snprintf()‌ 其接受一个额外的参数size用于指定目标缓冲区的大小。它在写入时会限制写入的长度以避免缓冲区溢出更安全。
http://www.dnsts.com.cn/news/82286.html

相关文章:

  • 做电影售票网站的难点做网站 天津
  • 企业建设网站应如何申请wordpress加一个字段
  • 优化推广网站淄博合肥小程序搭建
  • 合肥做网站的公微信引流的十个方法
  • 提高网站搜索排名jiasale wordpress 插件
  • 网页和网站做哪个好用施工企业安全管理制度
  • 网站源码区别wordpress 伪静态 分页
  • 做淘宝那样的网站麻烦吗网站开发asp.net和sql数据库
  • 吉林市网站建设招标mysql网站后台管理系统下载
  • 宁波网站推广专业服务长春网站快照优化公司
  • jsp建设网站教程吴江市建设局网站
  • 济南网站建设公司哪家好一点中国建设银行移动门户
  • 网站制作需要什么软件做直播网站找哪家网站
  • 网站开发中网页之间的链接形式apache建wordpress
  • 网站开发外包报价单网站搭建教程零基础
  • 深圳住房城乡建设局网站首页陕西省建设网官网首页
  • 阳城网站建设微信公众号开发创新
  • 网站 线框图网站兼容浏览器
  • 青岛外贸网站推广怎么自己刷推广链接
  • 网站后台清空三丰云免费服务器
  • 吴江企业网站制作虹口区建设工程管理网站
  • 做的比较好的医院网站西部数据网站助手
  • 西安做行业平台网站的公司本地合肥网站建设
  • 瓯北网站制作抖音官网链接网站怎么做
  • 天河建设网站公司长沙交互网站设计服务商
  • 定制设计网站公司制作网页代码大全
  • 全国设计网站建设品牌营销品牌推广
  • 100m网站空间服务费网站如何在百度上做推广方案
  • 梅州网站建设wlwl旅游网站功能流程图
  • 站长工具免费目前玩的人最多网游排行