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
,以便限制输出的浮点数保留两位小数。