sprintf 和snprintf 函数区别
sprintf 函数定义见: https://cplusplus.com/reference/cstdio/sprintf/
snprintf 函数定义见: https://cplusplus.com/reference/cstdio/snprintf/
从函数命名上 snprintf 比 sprintf多出了一个n,函数定义上,多出了第二个参数n 用来控制 输出字符的最大数量,其控制生成的字符长度最多为n-1,为附加的终止空字符留出空间。
因此 snprintf 是一个较为安全的函数,相比 sprintf 它可以避免缓冲区溢出问题, 如果输出的字符长度超过 n,它可以被自动截断。
在函数的返回值上,snprintf 和 sprintf 返回的都是 预期被写入到缓冲区的字符串长度(不包括终止符)。 对于snprintf来说,由于 支持长度限制、自动截断的能力,因此它的返回值可能比实际写入到缓冲区的长度大。
在实际项目开发中,通常我们总是建议使用 snprint函数。