赞
踩
printf() 是 式样化 输出函数, 简单说 就是 规定式样输出消息 的函数。
printf() 是 C语言标准库函数,用于将格式化后的字符串输出到标准输出(即标准输出文件,对应终端的屏幕)。
printf() 所在头文件 stdio.h
#include <stdio.h>
int printf ( const char * format, ... );
正确情况下 | 返回 输出的 字符总数 |
错误情况下 | 返回 负值;同时输入输出流错误标志将被置位,通过 ferror 来检查输入输出流的错误标志 |
printf (“格式化字符串”, 输出表列);
(1)字符串常量 (按原样输出);
(2)格式控制字符串 (按照一定格式输出;以%开头的字符串,%后面跟着 各种格式控制符,以说明输出数据的类型、宽度、精度等);
(3)转义字符 (以\开头+字母的特殊操作命令字符,如:\r 回车; \n 换行等)。
字符串就是按原样输出,写啥就输出啥!
格式控制字符串 形式:
"%【标志】【宽度】【.精度】【长度】类型” 【】表示可省略,根据需要添加。
格式字符 | 意义 |
- | 输出 结果左对齐,右边填空格(和输出最小宽度搭配使用) |
+ | 输出 结果右对齐,左边填空格(和输出最小宽度搭配使用),同时显示符号 |
# | 类型是o、x、X时,增加前缀0、0x、0X。 类型是a、A、e、E、f、g、G时,一定使用小数点。默认的,如果使用.0 控制不输出小数部分,则不输出小数点。 类型是g、G时,尾部的0保留。 |
空格 | 输出值为正时加上空格,为负时加上负号 |
0 | 将输出的前面补上0,直到占满指定列宽为止(不可以搭配使用“-”) |
宽度 | 描述 | 示例 |
数值 | 十进制整数 | printf("%06d",1000);输出:001000 |
* | 星号。不显示指明输出最小宽度,而是以星号代替,在printf的输出参数列表中给出 | printf("%0*d",6,1000);输出:001000 |
* | 星号。还可以控制浮点型数字保留的位数 | printf("%.*f", x, a); x是位数控制 |
示例代码:
- #include <stdio.h>
-
- void main(void)
- {
- int x = 9;
-
- printf("%03d \r\n", x); //补0凑齐3位
-
- printf("%02d \r\n", x); //补0凑齐2位
-
- printf("%3d \r\n", x); //补空格,凑齐3位
-
- printf("%d \r\n", x); //不补位,输出有效位
- }
输出:
.精度 | 描述 |
.数值 | 对于整数说明符(d, i, o, u, x, x): precision指定要写入的最小数字数。如果要写入的值比这个数字短,结果将用前导零填充。即使结果较长,值也不会被截断。精度为0意味着不为值0写入字符。 |
对于a, a, e, e, f和f说明符:这是小数点后要打印的位数(默认为6)。 | |
对于g和g说明符:这是要打印的有效数字的最大数量。 | |
对于s:这是要打印的最大字符数。默认情况下,将打印所有字符,直到遇到结束符空字符为止。 | |
如果指定的周期没有显式的精度值,则假定为0。 | |
.* | 精度不是在格式字符串中指定的,而是作为必须格式化的参数之前的附加整数值参数。 |
说明符 | ||||||||||
Keil C51 | 标准C | d i | u o x X | f F e E g G a A | c | s | p | n | ||
类型长度符号 | 类型长度 | 类型长度符号 | 类型长度 | |||||||
(无) | 默认 int | (无) | 依据类型默认 | int | unsigned int | double | int | char* | void* | int* |
b | 8位 | hh | 8位 | signed char | unsigned char | signed char* | ||||
h | 16位 | h | 16位 | short int | unsigned short int | short int* | ||||
l | 32位 | l | 32位 | long int | unsigned long int | wint_t | wchar_t* | long int* | ||
ll | 64位 | ll | 64位 | long long int | unsigned long long int | long long int* |
在Keil C51中用printf输出一个单字节变量时要使用%bd,如:
- printf(“Current count: %bd\n”, counter);//输出8位”十进制有符号整数”
- printf(“Current count: %bx\n”, counter);//输出8位”无符号以十六进制表示的整数”
在标准C语言中都是使用%d:
printf(“Current count: %d\n”, counter);
说明类型,因为类型是格式控制字符串的重中之重,是必不可少的组成部分,其它的选项都是可选的。类型用于规定输出数据的类型,含义如下:
格式字符 | 输出示例 | 意义 |
%d | printf("%d",16); | 以十进制输出带符号整数(正数不输出符号) |
%u | printf("%u",16); | 以十进制输出无符号整数 |
%f | printf("%f",3.14); | 以小数形式输出单、双精度实数 |
%s | printf("%s","Chi"); | 输出字符串 |
%c | printf("%c",'x'); | 输出单个字符 |
%x | printf("%x",5B); | 以十六进制输出无符号整数(不输出前缀 0x) |
%o | printf("%o",75); | 以八进制输出无符号整数(不输出前缀 0) |
%e | printf("%e",30000); | 以指数形式输出单、双精度实数 |
%g | printf("%e",30000); | 以 %f、%e 中较短的宽度输出单、双精度实数 |
%p | 输出地址符 |
转义字符 | 意义 |
\r | 回车符 |
\n | 换行符 |
\f | 清屏并换页符 |
\t | 横向制表符 |
\v | 纵向制表符 |
\a | 警报(响铃)符 |
\b | 回退符 |
\ | 反斜杠 |
\” | 双引号 |
\xhh | 表示一个ASCII码用16进表示,其中hh是1到2个16进制数 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。