- C标准库
- C库 - 首页
- C库 - <assert.h>
- C库 - <complex.h>
- C库 - <ctype.h>
- C库 - <errno.h>
- C库 - <fenv.h>
- C库 - <float.h>
- C库 - <inttypes.h>
- C库 - <iso646.h>
- C库 - <limits.h>
- C库 - <locale.h>
- C库 - <math.h>
- C库 - <setjmp.h>
- C库 - <signal.h>
- C库 - <stdalign.h>
- C库 - <stdarg.h>
- C库 - <stdbool.h>
- C库 - <stddef.h>
- C库 - <stdio.h>
- C库 - <stdlib.h>
- C库 - <string.h>
- C库 - <tgmath.h>
- C库 - <time.h>
- C库 - <wctype.h>
C库函数 - vfprintf()
描述
C库函数int vfprintf(FILE *stream, const char *format, va_list arg) 使用传递给它的参数列表将格式化输出发送到流。
声明
以下是vfprintf()函数的声明。
int vfprintf(FILE *stream, const char *format, va_list arg)
参数
stream − 这是指向FILE对象的指针,它标识流。
format − 这是包含要写入流的文本的C字符串。它可以选择包含嵌入的格式标签,这些标签将被后续附加参数中指定的值替换,并根据请求进行格式化。格式标签原型:%[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 |
+ 强制在结果前加上加号或减号(+或-),即使对于正数也是如此。默认情况下,只有负数前面带有“-”号。 |
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宏初始化。
返回值
如果成功,则返回写入的总字符数;否则,返回负数。
示例
以下示例显示了vfprintf()函数的用法。
#include <stdio.h> #include <stdarg.h> void WriteFrmtd(FILE *stream, char *format, ...) { va_list args; va_start(args, format); vfprintf(stream, format, args); va_end(args); } int main () { FILE *fp; fp = fopen("file.txt","w"); WriteFrmtd(fp, "This is just one argument %d \n", 10); fclose(fp); return(0); }
让我们编译并运行上面的程序,该程序将打开一个名为file.txt的文件以便写入当前目录,并将写入以下内容:
This is just one argument 10
现在让我们使用以下程序查看上面文件的 内容:
#include <stdio.h> int main () { FILE *fp; int c; fp = fopen("file.txt","r"); while(1) { c = fgetc(fp); if( feof(fp) ) { break; } printf("%c", c); } fclose(fp); return(0); }
让我们编译并运行上面的程序以产生以下结果。
This is just one argument 10