sprintf和snprintf
时间: 2023-12-28 15:25:56 浏览: 68
sprintf和snprintf都是C语言中用于格式化字符串的函数。
sprintf函数用于将格式化的数据写入字符串中。它的原型如下:
```c
int sprintf(char *str, const char *format, ...)
```
其中,str是目标字符串的指针,format是格式化字符串,后面的参数是要格式化的数据。sprintf函数会根据format字符串的格式将数据格式化后写入str中。
snprintf函数与sprintf函数类似,也是将格式化的数据写入字符串中。但是,snprintf函数在写入字符串时会限制写入的字符数,以防止缓冲区溢出。它的原型如下:
```c
int snprintf(char *str, size_t size, const char *format, ...)
```
其中,str是目标字符串的指针,size是要写入的最大字符数,format是格式化字符串,后面的参数是要格式化的数据。snprintf函数会根据format字符串的格式将数据格式化后写入str中,但不会超过size指定的字符数。
示例代码如下:
```c
#include <stdio.h>
int main() {
char str[10] = {0};
int str_len = snprintf(str, sizeof(str), "123456789012345678");
printf("str = %s\n", str); // 输出:123456789
printf("write_len = %d\n", strlen(str)); // 输出:9
printf("str_len = %d\n", str_len); // 输出:18
return 0;
}
```
这段代码中,我们使用snprintf函数将字符串"123456789012345678"格式化后写入str中。由于str的大小为10,所以只能写入9个字符,最后一个字符是'\0'。因此,输出的str为"123456789",write_len为9,str_len为18。
阅读全文