snprintf 用法举例
时间: 2024-08-31 08:00:21 浏览: 27
`snprintf` 是 C 标准库中的一个函数,用于将格式化的字符串输出到指定大小的缓冲区,它类似于 `printf` 函数,但是返回实际写入的字符数,包括填充的零,但不包括终止符 '\0'。它的原型通常如下:
```c
size_t snprintf(char *str, size_t max_size, const char *format, ...);
```
下面是一个使用 `snprintf` 的简单例子:
```c
#include <stdio.h>
#include <string.h>
int main() {
char buffer[20]; // 定义一个最大长度为19字节(包含null终止符)的缓冲区
int num = 42;
float fnum = 3.14;
// 使用 snprintf 避免缓冲区溢出
size_t len = snprintf(buffer, sizeof(buffer), "The number is %d and the fraction is %.2f", num, fnum);
// 注意 len 可能小于 sizeof(buffer),因为它可能已经写完了所有需要的内容,并且留下了空间给'\0'
if (len >= sizeof(buffer)) {
printf("Warning: Buffer overflow!\n");
} else {
printf("Formatted string: %s\n", buffer); // 输出结果
}
return 0;
}
```
在这个例子中,`snprintf` 将格式化后的字符串 `"The number is %d and the fraction is %.2f"` 写入 `buffer`,如果 `num` 和 `fnum` 的组合不会导致超过 `sizeof(buffer)` 字节,则输出格式化后的字符串。