C语言printf()函数的用法(非常详细)
C语言中的 printf() 函数是格式化输出函数,它不仅能输出字符串,还能输出整型、浮点型数据,接下来我们详细介绍 printf() 函数。
2) 输出列表:输出列表中列出的是要输出的一些数据,可以是变量或表达式。
例如,输出一个整型变量的语句如下:
由于 printf() 是函数,格式控制和输出列表处都是函数的参数,因此 printf() 函数的一般形式也可以表示为:
1) d、i 格式字符:以带符号的十进制形式输出整数(正数不输出+符号)。例如:
2) o 格式字符:以八进制无符号形式输出整数。例如:
3) x、X 格式字符:以十六进制无符号形式输出整数。用 x 输出十六进制数的 a~f 时,以小写形式输出;用 X 时,则以大写形式输出。例如:
4) u 格式字符:以无符号十进制形式输出整数。例如:
5) c 格式字符:以字符形式输出,只输出一个字符。例如:
6) s 格式字符:输出字符串。例如:
7) f 格式字符:以小数形式输出,默认输出 6 位小数。例如:
8) e、E 格式字符:以指数形式输出实数,用 e 时指数以“e”表示,用 E 时指数以“E”表示。例如:
9) G、g 格式字符:选用“%f”或“%e”格式中输出宽度较短的一种格式,不输出无意义的 0。若以指数形式输出,则指数以“E”表示。例如:
【实例】使用格式输出函数printf()输出不同类型的变量。
在使用 printf() 函数时,除 X、E、G 外其他格式字符必须用小写字母,如“%d”不能写成“%D”。如果想输出“%”符号,则在格式控制处使用“%%”进行输出即可。
下面分别对这 4 个附加格式字符进行举例说明。
1) l(字母 L)附加格式字符:用于长整型数据,可加在格式字符d、o、x、u、f前面。例如:
2) m(代表一个整数)附加格式字符:数据最小宽度。例如:
3) n(代表一个整数)附加格式字符:对于实数,表示输出 n 位小数;对于字符串,表示截取的字符个数。例如:
再如:
再如:
4) -附加格式字符。:输出的数字或字符在域内向左靠拢。例如:
【实例】通过例子来看一下附加格式字符的意义。
接下来用一个程序来说明,代码如下:
printf()的一般形式
在 C语言中,printf() 函数的作用是向终端(输出设备)输出若干任意类型的数据,其语法格式如下:printf(格式控制,输出列表);1) 格式控制:格式控制是用双引号标识的字符串,也称为转换控制字符串。其中包括格式字符和普通字符两种字符:
- 格式字符用来进行格式说明,作用是将输出的数据转换为指定的格式并输出。格式字符是以“%”字符开头的。
- 普通字符是需要原样输出的字符,其中包括双引号内的逗号、空格和换行符。
2) 输出列表:输出列表中列出的是要输出的一些数据,可以是变量或表达式。
例如,输出一个整型变量的语句如下:
int iInt=521; printf("%d I Love You",iInt);执行上面的语句输出的字符是“521 I Love You”。在格式控制双引号中的字符是“%d I Love You”,其中的“I Love You”字符串是普通字符,而“%d”是格式字符,表示输出的是后面 iInt 的数据。
由于 printf() 是函数,格式控制和输出列表处都是函数的参数,因此 printf() 函数的一般形式也可以表示为:
printf(参数1,参数2,……,参数n)
printf()的格式字符
函数中的每一个参数会按照给定的格式和顺序依次输出。例如,输出一个字符型变量和整型变量的语句如下:printf("the Int is %d,the Char is %c",iInt,cChar);下表列出了有关 printf() 函数的格式字符。
格式字符 | 功能说明 |
---|---|
d、i | 以带符号的十进制形式输出整数(整数不输出+符号) |
o | 以八进制无符号形式输出整数 |
x、X | 以十六进制无符号形式输出整数。用x输出十六进制数的a~f时,以小写形式输出;用X时,则以大写形式输出 |
u | 以无符号十进制形式输出整数 |
c | 以字符形式输出,只输出一个字符 |
s | 输出字符串 |
f | 以小数形式输出 |
e、E | 以指数形式输出实数,用e时指数以“e”表示,用E时指数以“E”表示 |
g、G | 选用“%f”或“%e”格式中输出宽度较短的一种格式,不输出无意义的0。若以指数形式输出,则指数以“E”表示 |
1) d、i 格式字符:以带符号的十进制形式输出整数(正数不输出+符号)。例如:
int a=-1; //整型变量 printf("%d", a); //用格式字符d输出,结果为-1 printf("%i", a); //用格式字符i输出,结果为-1
2) o 格式字符:以八进制无符号形式输出整数。例如:
int a=1314; //整型变量 printf("%o", a); //用格式字符o输出,结果为八进制数02442
3) x、X 格式字符:以十六进制无符号形式输出整数。用 x 输出十六进制数的 a~f 时,以小写形式输出;用 X 时,则以大写形式输出。例如:
int a=1522; //整型变量 printf("%x", a); //用格式字符x输出,结果为十六进制数0x5f2 printf("%X", a); //用格式字符X输出,结果为十六进制数0x5F2
4) u 格式字符:以无符号十进制形式输出整数。例如:
int a=1; //整型变量 printf("%u", a); //用格式字符u输出,结果为1
5) c 格式字符:以字符形式输出,只输出一个字符。例如:
char a='g'; //字符型变量 printf("%c", a); //用格式字符c输出,结果为g
6) s 格式字符:输出字符串。例如:
char *a="I love China"; //利用指针定义字符串变量 printf("%s", a); //用格式字符s输出,结果为I love China
7) f 格式字符:以小数形式输出,默认输出 6 位小数。例如:
float a=3.14f; //浮点型变量 printf("%f", a); //用格式字符f输出,结果为3.140000
8) e、E 格式字符:以指数形式输出实数,用 e 时指数以“e”表示,用 E 时指数以“E”表示。例如:
float a=13.14f; //浮点型变量 printf("%e", a); //用格式字符e输出,结果为1.314000e+01 printf("%E", a); //用格式字符E输出,结果为1.314000E+01
9) G、g 格式字符:选用“%f”或“%e”格式中输出宽度较短的一种格式,不输出无意义的 0。若以指数形式输出,则指数以“E”表示。例如:
float a=13.14f; //浮点型变量 printf("%G", a); //用格式字符G输出,结果为13.14 printf("%g", a); //用格式字符g输出,结果为13.14
【实例】使用格式输出函数printf()输出不同类型的变量。
#include<stdio.h> int main() { int iInt = 10; /*定义整型变量*/ char cChar = 'A'; /*定义字符型变量*/ float fFloat = 12.34f; /*定义单精度浮点型变量*/ printf("the int is: %d\n", iInt); /*使用printf()函数输出整型数据*/ printf("the char is: %c\n", cChar); /*输出字符型数据*/ printf("the float is: %f\n", fFloat); /*输出浮点型数据*/ printf("the string is: %s\n", "I LOVE YOU"); /*输出字符串*/ return 0; }运行结果为:
the int is: 10
the char is: A
the float is: 12.340000
the string is: I LOVE YOU
printf()的附加格式字符
在格式说明中,“%”符号和格式字符间可以插入几种附加符号,如下表所示:附加格式字符 | 功能说明 |
---|---|
l | 用于长整型整数,可加在格式字符d、o、x、u、f前面 |
m(代表一个整数) | 数据最小宽度 |
n(代表一个整数) | 对于实数,表示输出n位小数;对于字符串,表示截取的字符个数 |
- | 输出的数字或字符在域内向左靠拢 |
在使用 printf() 函数时,除 X、E、G 外其他格式字符必须用小写字母,如“%d”不能写成“%D”。如果想输出“%”符号,则在格式控制处使用“%%”进行输出即可。
下面分别对这 4 个附加格式字符进行举例说明。
1) l(字母 L)附加格式字符:用于长整型数据,可加在格式字符d、o、x、u、f前面。例如:
long a=123478987L; //定义长整型变量并赋值 double b = 0.013697; //定义双精度类型变量并赋值 printf("%ld %lf", a,b); //用附加格式字符l修饰d、f,输出结果输出结果如下:
123478987 0.013697
2) m(代表一个整数)附加格式字符:数据最小宽度。例如:
int a = 123; //定义整数 printf("这个数是:%4d", a); //此时m=4,修饰格式字符d printf("这个数是:%2d", a); //此时m=2,修饰格式字符d输出结果如下:
这个数是: 123
这个数是:123
3) n(代表一个整数)附加格式字符:对于实数,表示输出 n 位小数;对于字符串,表示截取的字符个数。例如:
float a = 13.1456f; //定义单精度类型变量并赋值 printf("%.2f", a); //用.2修饰f,其中n=2输出结果:
13.15
再如:
float a = 13.1456f; //定义单精度类型变量并赋值 printf("%10.2f", a); //用10.2修饰f,其中m=10、n=2输出结果(前面有 5 个空格)如下:
13.15
再如:
printf("%10.2s","instr"); //用10.2修饰s,其中m=10、n=2输出结果(前面有 8 个空格)如下:
in
4) -附加格式字符。:输出的数字或字符在域内向左靠拢。例如:
printf("%-10.2s","instr"); //用10.2修饰s,其中m=10、n=2输出结果(向左靠拢,前面没有空格)如下:
in
【实例】通过例子来看一下附加格式字符的意义。
#include<stdio.h> int main() { long iLong = 100000; /*定义长整型变量,为其赋值*/ printf("the Long is %ld\n", iLong); /*输出长整型变量*/ printf("the string is: %sKeJi\n", "MingRi"); /*输出字符串*/ printf("the string is: %10sKeJi\n", "MingRi"); /*使用10控制输出列*/ printf("the string is: %-10sKeJi\n", "MingRi"); /*使用-表示向左靠拢*/ printf("the string is: %10.2sKeJi\n", "MingRi"); /*使用2表示截取的字符数*/ printf("the string is: %-10.2sKeJi\n", "MingRi"); return 0; }运行结果为:
the Long is 100000
the string is: MingRiKeJi
the string is: MingRiKeJi
the string is: MingRi KeJi
the string is: MiKeJi
the string is: Mi KeJi
如何输出“%d”、“\”和双引号?
printf() 函数中格式字符有“%d”,转义字符前面有“\”,另外还有双引号,那么怎么将这 3 种符号输出呢?接下来用一个程序来说明,代码如下:
#include<stdio.h> int main() { printf("%%d\n"); //输出“%d” printf("\\\n"); //输出“\” printf("\"\"\n"); //输出双引号 }运行结果如下:
%d
\
""