admin管理员组文章数量:1122920
snprintf
int _snprintf_s(
char *buffer,
size_t sizeOfBuffer,
size_t count,
const char *format [,
argument] ...
);
1. sizeofBuffer,打算用于存储的缓冲区的宽度,注意,它与buffer是否还有很多空间无关,即使buffer还有很多空间,sizeofBuffer指定的大小才是你告诉该函数要使用的空间,换句话说,sizeofBuffer指定了当前有效的缓冲区的大小。
2. count,它存在的目的是,当后面参数得到的内容宽度超出了sizeofBuffer之后,避免缓冲区溢出,程序会自动截取count宽度的内容,并且追加一个结束符,也就是说count最多指定为sizeofBuffer-1,count可以等于sizeofBuffer,前提是后面参数得到的内容宽度没有溢出。将count参数设置为_TRUNCATE,如果内容宽度没有超出sizeofBuffer,则后面内容是多少就存多少,只有当内容宽度超出的时候,就等同于sizeofBuffer-1,也就是说只有溢出的时候_TRUNCATE才起到作用。
3. 即,count才是目标内容的宽度,sizeofBuffer只是缓冲区的宽度,当知道后面参数的真实宽度时,应该是指定在count上。
4. _snprintf_s 总是要追加一个结束符,因此,如果count和sizeofBuffer相等,并且后面内容大于等于了这个宽度,那么结束符就无处安放了,也就是会导致溢出。
————————————————
版权声明:本文为CSDN博主「dyzhen」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:
本文标签: snprintf
版权声明:本文标题:snprintf 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1686910018a46779.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论