赞
踩
- #include<stdio.h>
- int main()
- {
- printf("hello world!");
- return 0;
- }
这串代码的输出结果就是hello world!。
printf不会自己换行,例如:
- #include<stdio.h>
- int main()
- {
- printf("hello world!");
- printf("hello world!");
- printf("hello world!");
- printf("hello world!");
- return 0;
- }
结果就是:
hello world!hello world!hello world!hello world!
如果要换行,可以在文本末尾加上\n:
- #include<stdio.h>
- int main()
- {
- printf("hello world!\n");
- printf("hello world!\n");
- printf("hello world!\n");
- printf("hello world!\n");
- return 0;
- }
结果就是:
hello world!
hello world!
hello world!
hello world!
在文本内部也可以加入\n来达到换行的效果:
- #include<stdio.h>
- int main()
- {
- printf("hello\n world!\n");
- printf("hello\n world!\n");
- printf("hello\n world!\n");
- printf("hello\n world!\n");
- return 0;
- }
结果为:
hello
world!
hello
world!
hello
world!
hello
world!
printf是在标准库中的头文件<stdio.h>定义的,在使用这个函数之前,必须引入这个头文件,也就是说,必须在使用前加入#include<stdio.h>这个代码。
printf可以在输出文本中指定占位符,所谓占位符,就是可以用其他值代入。举个例子:
- int main()
- {
- int a = 0;
- printf("%d", a);
- return 0;
- }
上面的例子中,%d就是占位符,可以用a值代入,而a的值为0,所以结果为0。
占位符的第一个字符一律为%,而上面的%d就是一种用来表示整型的占位符。除了%d可以表示整型,还有%s可以表示字符串:
- int main()
- {
- printf("haha %s", "hehe");
- return 0;
- }
结果为haha hehe
如果有多个占位符呢:
- int main()
- {
- printf("haha %s %d", "hehe",10);
- return 0;
- }
那么第一个参数就代替第一个占位符,第二个参数就代替第二个占位符。
除了这些占位符,C语言还提供了许多其他的占位符:
%a:十六进制浮点数,字母输出为小写。
%A:十六进制浮点数,字母输出为大写。
%c:字符。
%d:十进制整数。
%e:用科学计数法计数的浮点数,指数部分的e用小写。
%E:用科学计数法计数的浮点数,指数部分的E用大写。
%i:整数,基本等同于%d。
%f:小数(包含float和double类型)。
%g:六个有效数字的浮点数。整数部分一旦超过六位,就会自动转为科学计数法,指数部分的e为小写。
%G:六个有效数字的浮点数。整数部分一旦超过六位,就会自动转为科学计数法,指数部分的E为大写。
%hd:十进制short int类型。
%ho:八进制short int类型。
%hx:十六进制short int类型。
%hu:unsigned short int类型。
%ld:十进制long int类型。
%lo:八进制long int类型。
%lx:十六进制long int类型。
%lu:unsigned long int类型。
%lld:十进制long long int类型。
%llo:八进制long long int类型。
%llx:十六进制long long int类型。
%llu:unsigned long long int类型。
%Le:科学计数法表示的long double类型浮点数。
%Lf:long double类型浮点数。
%n:已输出的字符串数量。该占位符本身不输出,只将值存储在指定变量中。
%o:八进制整数。
%p:指针。
%s:字符串。
%u:无符号整数(unsigned int)。
%x:十六进制整数。
%zd:size_t类型。
%%:输出一个百分号。
printf可以定制占位符的输出格式
- int main()
- {
- printf("%5d",123);
- return 0;
- }
上面的示例中%5d表示这个占位符的宽度至少是五位,如果输出内容不足五位,那么会在前面补上空格,如果超过五位,则没有影响。默认是向右对齐,也就是在输出内容前面会有空格,所以结果是 123。
如果要向左对齐,也就是要在输出内容右边补上空格,那么就要用%-5d:
- int main()
- {
- printf("%-5da",123);
- return 0;
- }
结果为123 a。
对于小数也是一样的:
- int main()
- {
- printf("%12f",3.14);
- return 0;
- }
输出结果为 3.14。
默认情况下,printf会省略正号,但是只要在占位符中间加一个+,就会强制显示符号,例如:
- int main()
- {
- printf("%+d", 3);
- printf("%+d", -3);
- return 0;
- }
结果为+3-3。
(3)限定小数位数
输出小数时,有时候希望限定小数的位数,例如,保留两位小数时,可以写成%.2f,就像下面这样:
- int main()
- {
- printf("%.2f\n", 3.1);
- printf("%.2f\n", 3.1415);
- return 0;
- }
结果为
3.10
3.14
这种用法可以和限定宽度结合使用:
- int main()
- {
- printf("%7.3f\n", 3.1);
- printf("%7.3f\n", 3.1415);
- return 0;
- }
结果为
3.100
3.142
类似于占位符,这两个限定值都可以用*代替通过printf()的参数带入:
- int main()
- {
- printf("%*.*f\n",7,3, 3.1);
- printf("%*.*f\n",7,3, 3.1415);
- return 0;
- }
结果与上面一串代码相同。
(3)输出部分字符串
%s用于输出部分字符串,但是如果你想要只输出开头部分,可以用%.[m]s来输出指定长度,[m]代表一个数字表示所要输出的长度:
- int main()
- {
- printf("%.5s","hello world!");
- return 0;
- }
结果只输出前五个字符,也就是hello。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。