C 库函数 - vprintf()



描述

C 库函数int vprintf(const char *format, va_list arg) 使用传递给它的参数列表将格式化输出发送到 stdout。

声明

以下是 vprintf() 函数的声明。

int vprintf(const char *format, va_list arg)

参数

  • format − 这是包含要写入缓冲区的文本的字符串。它可以选择包含嵌入的格式标记,这些标记将被后续附加参数中指定的值替换,并根据请求进行格式化。格式标记原型为 − %[flags][width][.precision][length]specifier,如下所述 −

序号 说明符 & 输出
1

c

字符

2

d 或 i

带符号十进制整数

3

e

使用 e 字符的科学记数法(尾数/指数)

4

E

使用 E 字符的科学记数法(尾数/指数)

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

-

在给定的字段宽度内左对齐;右对齐为默认值(参见宽度子说明符)。

2

+

强制在结果前面加上加号或减号(+ 或 -),即使对于正数也是如此。默认情况下,只有负数前面带有 -ve 符号。

3

(空格)

如果不打算写入任何符号,则在值之前插入一个空格。

4

#

与 o、x 或 X 说明符一起使用时,对于不同于零的值,分别以 0、0x 或 0X 为前缀。与 e、E 和 f 一起使用时,它强制写入的输出包含一个小数点,即使没有数字跟随也是如此。默认情况下,如果后面没有数字,则不写入小数点。与 g 或 G 一起使用时,结果与 e 或 E 相同,但不会删除尾随零。

5

0

用零 (0) 而不是空格填充数字的左侧,其中指定了填充(参见宽度子说明符)。

序号 宽度 & 描述
1

(数字)

要打印的最小字符数。如果要打印的值短于此数字,则结果将用空格填充。即使结果更大,也不会截断值。

2

*

宽度未在格式字符串中指定,而是作为在要格式化的参数之前的附加整数值参数。

序号 .精度 & 描述
1

.数字

对于整数说明符 (d、i、o、u、x、X) - 精度指定要写入的最小位数。如果要写入的值短于此数字,则结果将用前导零填充。即使结果更长,也不会截断值。精度为 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 宏初始化。

返回值

如果成功,则返回写入的字符总数,否则返回负数。

示例

以下示例显示了 vprintf() 函数的使用方法。

#include <stdio.h>
#include <stdarg.h>

void WriteFrmtd(char *format, ...) {
   va_list args;
   
   va_start(args, format);
   vprintf(format, args);
   va_end(args);
}

int main () {
   WriteFrmtd("%d variable argument\n", 1);
   WriteFrmtd("%d variable %s\n", 2, "arguments");
   
   return(0);
}

让我们编译并运行上述程序,它将产生以下结果 −

1 variable argument
2 variable arguments
stdio_h.htm
广告