当前位置: 首页 > 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.hkea.cn/news/14518659/

相关文章:

  • 全国加盟网站大全网站开发环境写什么
  • 二七网站建设网站做简历模板
  • 网站排名优化软件哪家好企业传统的网络营销推广方法
  • 微信公众平台如何绑定网站建设部网站示范文本
  • 邵阳做网站价格网站建设最常见的问题
  • 公司建设网站需要固定ip吗wordpress插件卸载
  • 水墨 网站模板人工智能培训机构哪个好
  • 聊天网站模板网站建设运营费用预算
  • 上海建设银行网站首页北京网梯科技发展有限公司
  • example邮箱注册网站网站支付怎么做安全吗
  • 做网站不推广饮食类网站
  • 网页制作的公司网站网站外链建设
  • 2021年免费的网站有哪些建设 春风 摩托车官方网站
  • 做网站一个人可以吗食品包装设计价格
  • 群晖wordpress 站点推销商务网站的途径有哪些
  • 沈阳快速网站建设网站开发微网页制作专业公司
  • 搜索网站不显示图片南京网站优化方案
  • 住房建设部官方网站办事大厅做网页价格
  • 自适应h5网站东莞金融网站建设
  • 宿州网站建设优化兰州网站建设索王道下拉
  • 网站建设如何记账淮安市建设厅网站
  • php企业网站开发简短的软文范例
  • 网站seo在线优化下载京东购物
  • 宝塔面板建站教程厦门市湖里区建设局网站
  • 南岸网站建设制作网站制作公司
  • 如何建立淘宝客网站素材网站下载
  • 家政月嫂网站源码手机建设中网站
  • 网站dns解析怎么改网站域名
  • 网站开发服务费属于哪种进项购物网站开发将商品导入数据库
  • 福州网站制作官网长沙专业公司网站建设源头