sscanf() without field width limits can crash with huge input data.

麦壳饼 2020-06-02 10:01:35
谁给我讲讲 sscanf 这个警告什么意思怎么改啊?我对这个理解不太透彻哇。


sscanf(buf, "%*[^<]<%[^>]>", iniDefaultPlate);
sscanf(buf, "<%[^>]>", _platecolor[i].Color);
sscanf(buf, "<%d|%[^>]>", &m[i].No, m[i].Code);
...全文
1192 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
棉猴 2020-06-02
  • 打赏
  • 举报
回复
通过sscanf()函数向字符数组buf中写入内容时,需要指定写入内容的大小。否则,当写入的内容超过buf的大小时,会产生溢出。
char name[100];
fscanf(wp, "%99s", name);
此时,需要指定写入的宽度99。
qybao 2020-06-02
  • 打赏
  • 举报
回复
这是读入的数据可能大于你的保存数据的变量的内存空间 如果是windows的话,可以用sscanf_s最后加个长度参数

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧