描述
C库函数int vsprintf(char *str, const char *format, va_list arg)使用传递给它的参数列表将格式化输出发送到字符串。
声明
以下是 vsprintf() 函数的声明。
int vsprintf(char *str, const char *format, va_list arg)
参数
str- 这是要存储结果字符串的字符元素数组。
format- 这是包含要写入 str 的文本的 C 字符串。它可以选择包含嵌入的格式标签,这些标签被后续附加参数中指定的值替换,并按要求进行格式化。格式标签原型 -%[flags][width][.precision][length]specifier,如下所述 -
不。 | 说明符和输出 |
---|---|
1 |
c 特点 |
2 |
d or i 有符号十进制整数 |
3 |
e 使用 e 字符的科学记数法(尾数/ index ) |
4 |
E 使用 E 字符的科学记数法(尾数/ index ) |
5 |
f 十进制浮点数 |
6 |
g 使用 %e 或 %f 中较短的一个。 |
7 |
G 使用 %E 或 %f 中的较短者 |
8 |
o 有符号八进制 |
9 |
s 字串 |
10 |
u 无符号十进制整数 |
11 |
x 无符号十六进制整数 |
12 |
X 无符号十六进制整数(大写) |
13 |
p 指针地址 |
14 |
n 没有打印 |
15 |
% 特点 |
不。 | 标志和描述 |
---|---|
1 |
- 在给定的字段宽度内为Left-justify;右对齐是默认设置(请参见宽度sub-specifier)。 |
2 |
+ 即使对于正数,也强制在结果前面加上加号或减号(+ 或 -)。默认情况下,只有负数前面带有 -ve 符号。 |
3 |
(space) 如果不写任何符号,则在该值之前插入一个空格。 |
4 |
# 与 o、x 或 X 说明符一起使用,对于非零的值,该值分别以 0、0x 或 0X 开头。与 e、E 和 f 一起使用,它会强制写入的输出包含小数点,即使后面没有数字。默认情况下,如果后面没有数字,则不写入小数点。与 g 或 G 一起使用,结果与 e 或 E 相同,但不会删除尾随零。 |
5 | 0 Left-pads 用零 (0) 代替空格的数字,其中指定了填充(参见宽度 sub-specifier)。 |
不。 | 宽度和描述 |
---|---|
1 |
(number) 最少要打印的字符数。如果要打印的值小于此数字,则结果将用空格填充。即使结果较大,该值也不会被截断。 |
2 |
* 宽度不是在格式字符串中指定的,而是作为必须格式化的参数之前的附加整数值参数。 |
不。 | .精度和描述 |
---|---|
1 |
.number 对于整数说明符 (d, i, o, u, x, X) - precision 指定要写入的最小位数。如果要写入的值小于此数字,则结果用前导零填充。即使结果更长,该值也不会被截断。精度为 0 意味着不为值 0 写入字符。对于 e、E 和 f 说明符 - 这是小数点后要打印的位数。对于 g 和 G 说明符 - 这是要打印的最大有效数字数。对于 s - 这是要打印的最大字符数。默认情况下,将打印所有字符,直到遇到结束的空字符。对于 c 类型 - 它没有效果。如果未指定精度,则默认值为 1。如果指定的句点没有明确的精度值,则假定为 0。 |
2 |
.* 精度不是在格式字符串中指定的,而是作为必须格式化的参数之前的附加整数值参数。 |
不。 | 长度和描述 |
---|---|
1 |
h 参数被解释为一个 short int 或 unsigned short int(仅适用于整数说明符 - i、d、o、u、x 和 X)。 |
2 |
l 对于整数说明符(i、d、o、u、x 和 X),参数被解释为 long int 或 unsigned long int,对于说明符 c 和 s,参数被解释为宽字符或宽字符串。 |
3 |
L 该参数被解释为 long double(仅适用于浮点说明符 - e、E、f、g 和 G)。 |
arg- 表示变量参数列表的对象。这应该由 <stdarg> 中定义的 va_start 宏初始化。
返回值
如果成功,则返回写入的总字符数,否则返回负数。
示例
下面的例子展示了 vsprintf() 函数的用法。
#include <stdio.h>
#include <stdarg.h>
char buffer[80];
int vspfunc(char *format, ...) {
va_list aptr;
int ret;
va_start(aptr, format);
ret = vsprintf(buffer, format, aptr);
va_end(aptr);
return(ret);
}
int main () {
int i = 5;
float f = 27.0;
char str[50] = "tutoriaspoint.com";
vspfunc("%d %f %s", i, f, str);
printf("%s\n", buffer);
return(0);
}
让我们编译并运行上面的程序,这将产生以下结果 -
5 27.000000 tutoriaspoint.com
相关用法
- C语言 vprintf()用法及代码示例
- C语言 宏 va_start()用法及代码示例
- C语言 vfprintf()用法及代码示例
- C语言 宏 va_arg()用法及代码示例
- C语言 宏 va_end()用法及代码示例
- C语言 宏 assert()用法及代码示例
- C语言 setlocale()用法及代码示例
- C语言 fread()用法及代码示例
- C语言 sinh()用法及代码示例
- C语言 宏 offsetof()用法及代码示例
- C语言 feof()用法及代码示例
- C语言 scanf()用法及代码示例
- C语言 imagesize()用法及代码示例
- C语言 getarcoords()用法及代码示例
- C语言 isdigit()用法及代码示例
- C语言 clock()用法及代码示例
- C语言 strcspn()用法及代码示例
- C语言 setlinestyle()用法及代码示例
- C语言 fmod()用法及代码示例
- C语言 showbits()用法及代码示例
注:本文由纯净天空筛选整理自 C library function - vsprintf()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。