sprintf_s 是 C11 标准库中的一个安全版本的 sprintf 函数,用于将格式化的数据写入字符串
%s - 字符串(char *)%d - 十进制整数(int)%u - 无符号十进制整数(unsigned int)%f - 浮点数(float)%lf - 双精度浮点数(double)%l - 长整型(long)%lu - 无符号长整型(unsigned long)%lld - 长整型(long long)%llu - 无符号长整型(unsigned long long)%c - 字符(char)%f - 浮点数(float,与 %f 相同)%F - 双精度浮点数(double,与 %lf 相同)%p - 指针(void *)对于其他类型,如 %n(输出转换的字符数)、%x(十六进制整数,小写)、%X(十六进制整数,大写)等,也可以使用,但它们不是 C11 标准的一部分,而是依赖于具体的编译器和平台。
在使用 sprintf_s 时,请确保遵循以下规则:
%n 时,确保传递一个指针作为参数,以便将转换后的字符数存储在该指针指向的位置。%p 时,将指针转换为 void * 类型。示例:
#include <stdio.h>
#include <string.h>
int main() {
int a = 42;
double b = 3.14;
char buffer[50];
// 使用正确的格式规范
int result = sprintf_s(buffer, sizeof(buffer), "整数: %d, 双精度浮点数: %.2lf", a, b);
if (result > 0) {
printf("输出字符串: %s\n", buffer);
} else {
printf("发生错误\n");
}
return 0;
}
这个示例中,我们使用 %d 和 %.2lf 作为格式规范,分别输出整数和双精度浮点数。注意,我们使用了 %.2lf 而不是 %lf,以便限制输出的浮点数保留两位小数。