本文共 2628 字,大约阅读时间需要 8 分钟。
printf()函数提供格式化输出转换
int fprintf(FILE *stream,const char *format,...)
fprintf 函数按照 format 说明的格式对输出进行转换,并写到 stream 流中。返回值是实际写入的字符数。若出错则返回一个负值。
格式串由两种类型的对象组成:普通字符(将被复制到输出流中)与转换说明(分别决定下一后续参数的转换和打印) 。每个转换说明均以字符%开头,以转换字符结束。在%与转换字符之间可以依次包括下列内容:
- 指定被转换的参数在其字段内左对齐
+ 指定在输出的数前面加上正负号 空格 如果第一个字符不是正负号,则在其前面加上一个空格 0 对于数值转换,当输出长度小于字段宽度时,添加前导0进行填充 # 指定另一种输出形式。如果为 o 转换,则第一个数字为零;如果为 x 或 X 转换,则指定在输出的非 0 值前加 0x 或 0X;对于 e、E、f、g 或 G 转换,指定输出总包括一个小数点;对于 g 或 G 转换,指定输出值尾部无意义的 0 将被保留如果%后面的字符不是转换字符,则其行为没有定义。
转换字符 | 参数类型 | 转换结果 |
---|---|---|
d,i | int | 有符号十进制表示 |
o | unsigned int | 无符号八进制表示 |
x,X | unsigned int | 无符号十六进制表示(没有前导0x或0X),如果是0x,则使用ABCDEF |
u | int | 无符号十进制表示 |
c | int | 转换为unsigned char类型后变为一个字符 |
s | char * | 打印字符串中的字符,直到遇到’\0’或已经打印了由精度指定的字符数 |
f | double | 形式为[-]mmm.ddd的十进制表述,其中,d的数目由精度决定,默认为6。精度为0时不输出小数点 |
e,E | double | 形式为[-]m.dddddd e ±xx或[-]m.dddddd E ±xx。d的数目由精度决定,默认为6。精度为0时不输出小数点 |
g,G | double | 当指数小于4或大于等于精度时,采用%e或%E的格式,否则采用%f的格式。尾部的0和小数点不打印。 |
p | void * | 打印指针值(具体表示方式与实现有关) |
n | int * | 到目前为止,此printf调用输出的字符的数目将被写入到相应参数中,不进行参数转换 |
% | 不进行参数转换,打印一个符号% |
#include#include #include int main(){ int printCount; int intAnimal = 114514; double animal = 114514.1919810; printf("Oct : %o\n",intAnimal); printf("Hex : %x\n",intAnimal); printf("HEX : %X\n",intAnimal); printf("The number of animal is %f.\n",animal); printf("This%n is a text\n",&printCount); printf("The output above contains %d chars.",printCount);}
输出:
Oct : 337522Hex : 1bf52HEX : 1BF52The number of animal is 114514.191981.ThisThe output above contains 0 chars.//这里看出,%n的语句有bug,不知道是不是windows的锅,还请看到的大佬指教。
int printf(const char *format,...)
printf(…)函数等价于fprintf(stdout,…)
int sprintf(char *s,const char *format,...)
sprintf() 函数与 printf() 函数基本相同,但其输出将被写入到字符串 s 中,并以’\0’ 结束。s 必须足够大,以足够容纳下输出结果。该函数返回实际输出的字符数,不包括’\0’。
int vprintf(const char *format, va_list arg) int vfprintf(FILE *stream, const char *format, va_list arg) int vsprintf(char *s, const char *format, va_list arg)
vprintf、vfprintf、vsprintf 这 3 个函数分别与对应的 printf 函数等价,但它们用 arg 代替了可变参数表。arg 由宏 va_start 初始化,也可能由 va_arg 调用初始化。详细信息之后对<stdarg.h>头文件的讨论会涉及。
转载地址:http://edwai.baihongyu.com/