900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > C语言printf函数详解

C语言printf函数详解

时间:2020-10-19 18:56:10

相关推荐

C语言printf函数详解

本文已整合到C语言标准库深度解读

printf是绝大多数人接触的第一个C语言函数,但绝大多数人对printf的认识也就到了hello world为止了,很多人甚至看不懂这个函数的声明:

int printf(const char *format, ...)

关键是字符串格式比较复杂,可以表示为%[flags][width][.precision]specifier

例如

#include<stdio.h>#define PI 3.14159265358979323846264338327950288int main(){printf("%6.2f",PI);return 0;}

其输出为

E:\Documents\00\1110>a.exe3.14

其中,%6.2f可分为3部分,6表示输出六个字符;.2表示保留2位小数;f表示输出的是浮点数。由于PI在保留2位小数之后,只有4个字符,所以在3.14左侧补上了空格。

各参数的取值与含义可见于下表,如果觉得不够直观,可直接跳到测试部分。

其中,

i, d, o, u, x, X可通过h修饰,从而输出短整型;通过l修饰,从而输出长整型e, E, f, g, G可通过l修饰,表示长双精度型,但在Windows下可能没什么差别。

width表示宽度,为数字时,表示输出字符的最小数目,若输出值比width短,则用空格填充。

precision表示精度,为.数字时,表示写入数字的最小位数。

下面随机抽选一些表达式,列出其输出结果,事先声明一些变量

#define PI 3.14159265358979323846264338327950288#define IPI 31415926int main(){float fPI = PI;double dPI = PI;//printfreturn 0;}

浮点型测试

整型测试

stdio中,定义了一系列printf函数和scanf函数,通过在前面添加一个字母来表示不同的行为:

为了便于阅读,下面默认

#define FORMAT const char *format

printf族函数声明分别为

int fprintf(FILE *stream, FORMAT, ...)int sprintf(char *str, FORMAT, ...)int vfprintf(FILE *stream, FORMAT, va_list arg)int vprintf(FORMAT, va_list arg)int vsprintf(char *str, FORMAT, va_list arg)int snprintf(char *str, size_t size, FORMAT, ...)

其中snprintf中的size表示要写入字符的最大数目,超过size会被截断。

scanf族函数声明为

int fscanf(FILE *stream, FORMAT, ...)int scanf(FORMAT, ...)int sscanf(cSTR, FORMAT, ...)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。