int fprintf(FILE *stream, const char *format, ...)
描述 (Description)
C库函数int fprintf(FILE *stream, const char *format, ...)将格式化输出发送到流。
声明 (Declaration)
以下是fprintf()函数的声明。
int fprintf(FILE *stream, const char *format, ...)
参数 (Parameters)
stream - 这是指向标识流的FILE对象的指针。
format - 这是包含要写入流的文本的C字符串。 它可以选择包含嵌入的格式标记,这些标记由后续附加参数中指定的值替换,并按请求格式化。 格式标签原型是%[flags][width][.precision][length]specifier ,如下所述 -
Sr.No. | 说明符和输出 |
---|---|
1 | c 字符 |
2 | d or 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 | % 字符 |
Sr.No. | 标志和描述 |
---|---|
1 | - 给定字段宽度内的左对齐; 右对齐是默认值(请参阅宽度子说明符)。 |
2 | + 强制在结果前面加上加号或减号(+或 - ),即使是正数。 默认情况下,只有负数前面带有-ve符号。 |
3 | (space) 如果未写入任何符号,则在值之前插入空格。 |
4 | # 与o,x或X说明符一起使用。 对于不同于零的值,该值分别以0,0x或0X开头。 与e,E和f一起使用时,即使没有数字,也会强制写入的输出包含小数点。 默认情况下,如果没有数字,则不写入小数点。 与g或G一起使用时,结果与e或E相同,但不删除尾随零。 |
5 | 0 使用零(0)而不是空格填充数字,其中指定了填充(请参阅width子说明符)。 |
Sr.No. | 宽度和描述 |
---|---|
1 | (number) 要打印的最小字符数。 如果要打印的值小于此数字,则结果将填充空格。 即使结果较大,也不会截断该值。 |
2 | * 宽度未在格式字符串中指定,而是作为必须格式化的参数之前的附加整数值参数。 |
Sr.No. | .precision&Description |
---|---|
1 | .number 对于整数说明符(d,i,o,u,x,X) - precision指定要写入的最小位数。 如果要写入的值小于此数字,则结果将使用前导零填充。 即使结果较长,也不会截断该值。 精度为0意味着没有为值0写入字符。对于e,E和f说明符:这是小数点后要打印的位数。 对于g和G说明符:这是要打印的最大有效位数。 对于s:这是要打印的最大字符数。 默认情况下,将打印所有字符,直到遇到结束的空字符。 对于c类型:它没有效果。 如果未指定精度,则默认值为1.如果指定的句点没有显式的精度值,则假定为0。 |
2 | .* 精度未在格式字符串中指定,而是作为必须格式化的参数之前的附加整数值参数。 |
Sr.No. | 长度和描述 |
---|---|
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)。 |
additional arguments - 根据格式字符串,函数可能需要一系列附加参数,每个参数包含一个要插入的值,而不是format参数中指定的每个%-tag(如果有)。 这些参数的数量应与期望值的%-tags数相同。
返回值 (Return Value)
如果成功,则返回写入的字符总数,否则返回负数。
例子 (Example)
以下示例显示了fprintf()函数的用法。
#include <stdio.h>
#include <stdlib.h>
int main () {
FILE * fp;
fp = fopen ("file.txt", "w+");
fprintf(fp, "%s %s %s %d", "We", "are", "in", 2012);
fclose(fp);
return(0);
}
让我们编译并运行上面的程序,它将创建一个带有以下内容的文件file.txt -
We are in 2012
现在让我们使用以下程序查看上述文件的内容 -
#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);
}
让我们编译并运行上面的程序以产生以下结果。
We are in 2012