1,背景
在学习Linux的过程中,偶然间看到了sys文件系统的说明文档:./Documentation/filesystems/sysfs.txt(系统版本为4.7.3),其中在说明文档中,有这么一段话:
- show() methods should return the number of bytes printed into the
buffer. This is the return value of scnprintf().
- show() must not use snprintf() when formatting the value to be
returned to user space. If you can guarantee that an overflow
will never happen you can use sprintf() otherwise you must use
scnprintf().
但是,以前偶尔看到的Linux系统驱动源码中,却经常看到使用snprintf的情况,并且在某些博客甚至案例中点名了要使用这个函数,在Linux的官方文档中,却禁止使用这个函数的原因是什么?
2,snprintf和scnprintf 对比
首先看一下snprintf
官方文档:http://www.cplusplus.com/reference/cstdio/snprintf/
The number of characters