博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[轉]用 snprintf / asprintf 取代不安全的 sprintf
阅读量:4448 次
发布时间:2019-06-07

本文共 448 字,大约阅读时间需要 1 分钟。

在 C 語言裡,要建立一個字元陣列的字串,常常會使用  這個函數來做格式化的處理。但是實際上,這個函式卻不是那麼「安全」。怎麼說呢?sprintf() 的整個介面長的樣子的是:

也就是在使用前,必須要先建立好一個字元陣列的空間,再用這個函式把內容填入,下面就是簡單的例子:

int tmp = 10;char cstr[20];sprintf( cstr, "%d * %d = %d", tmp, tmp, tmp * tmp );
改用snprintf避免buffer overflow
int tmp = 10000;char cstr[20];snprintf( cstr, sizeof( cstr ), "%d * %d = %d", tmp, tmp, tmp * tmp );
回傳值
  • 正常狀況會回傳 len。
  • 如果有錯誤,回傳負值(-1)

转载于:https://www.cnblogs.com/bittorrent/archive/2012/12/26/2834914.html

你可能感兴趣的文章
Mybatis源码分析: MapperMethod功能讲解(1)
查看>>
Error: Cannot retrieve repository metadata (repomd.xml) for repository: addons.
查看>>
jqGrid的subGrid子表格
查看>>
插件库
查看>>
桶排序
查看>>
the least common multiplier
查看>>
Metro 风格的浏览和无插件的 HTML5
查看>>
LifecycleControl.cs
查看>>
函数式思维: 利用 Either 和 Option 进行函数式错误处理 类型安全的函数式异常...
查看>>
ICEfaces 3.2.0.BETA1 发布
查看>>
Wine 1.5.15 发布
查看>>
Grsync 1.2.2 发布,图形界面的 rsync
查看>>
Chrome 开始允许用户自己监控扩展的活动
查看>>
MySQL for Excel —— 用Excel方式操作MySQL
查看>>
在 Cloud 9 中搭建和运行 Go
查看>>
求字符串中第一个只出现一次的字符
查看>>
ASP.NET常见模块:在线文件管理模块的设计与开发
查看>>
Swift学习第二天
查看>>
div 旋转
查看>>
【设计模式】4、原型模式
查看>>