常见打印字符:
我们往往会遇到特殊的打印字符,如 : %4d 、%.2f 、%.3s 、%.2e,那么这些字符的打印形式又是什么呢? 欲知后事如何,点赞关注一波,咱们继续下文!
%x.yd 形式:
例:
printf("%3d",10)
此代码表示将 整数10以 字段宽度为3 的形式 打印,不足则以空格填充.
结果如下:
由于10只占2个字段宽度。所以多的字段会自动用空格补充。我们可以通过%03d来用0替换掉空格
printf("%03d",10) 将 整数10以 字段宽度为3位的形式 打印,不足则以 0填充.
结果如下:
例: 打印一个字段宽度为6,最少有4位数字的十进制数.
字段宽度我们已经知道,此时要求至少有4位数字打印该怎么办? ,此时 %.yd 可以解决这个问题
printf("%6.4d",1000); 将整数1000以 字段宽度为6位 最少有4位数字的形式 打印, 不足则以 空格 填充.结果如下:
若数据的位数不足4位,则会自动往前补0,来达到四位数字,如 printf("%6.4d", 10); 结果如下:
做总结: %x.yd ( x控制字段宽度 , y控制数据有效位数)
%x.yf形式:
%x.yf 其中 x同 %x.yd 中的 x作用相同,都是来控制字段宽度,我们就不与重复
例: 将 1.234 保留两位小数 打印。我们通过 .2f 来控制保留小数位数
printf("%.2f",1.234);
结果:
注意: 在进行保留小数位的操作时 会 自动进行四舍五入的操作
如: 下列代码会保留两位小数,系统会自动进行四舍五入操作
printf("%.2f", 1.235);
结果:
我们可以通过这个特性来实现进位操作.
做总结: %x.yf ( x控制字段宽度 , y控制保留位数)
%x.ys形式:
%x.ys 其中 x同 %x.yd 中的 x作用相同,都是来控制字段宽度,我们就不与重复
例: 打印一个字段宽度为7,左对齐的字符串中的前5个字符
字段宽度为7,我们可以 %7s 来限制, 而要取前五个字符则要通过 %.5s
左对齐就是在 '%'后面加 ' - ', 默认右对齐('+'表示右对齐),' - '表示左对齐
我们将多余的字段以 0填充,可以更加直观的看到效果,代码如下:
char hel[10]="hellocsdn";
printf("%07.5s",hel);
结果:
首先取前 5个字符( hello ),发现字段多余,以0填充,故结果 为 00hello
做总结: %x.yf ( x控制字段宽度 , y控制取字符串前指定位数)
%x.ye形式:
首先了解 %e,表示以科学计数法表示。 %e的格式如下:
%xe 不用说了,懂得都懂(控制字段宽度) , 而 %.ye 中的 y也和 %y.f 中的y作用相同,用来控制小数位数。 如下代码: 将1000.3以科学计数法表示并保留两位小数
printf("%.2e", 1000.3);
结果:
做总结: %x.ye ( x控制字段宽度 , y控制取保留小数位数)
%*形式:
%*无参时:
当输入数据为字符串和整型数据时,若想忽略字符串,只取整形部分时,采用 %*,如下代码:
int a;
char b[10];
scanf("%*s %d", &a);
printf("%s %d",b,a);
结果: %*s 忽略输入的字符串
可以看到输入的 awf 没有被读取,而后面输入的 10被读取成功。
%*有参时:
我们可以传入参数*来控制 字段宽度,如下列代码:
char arr[40] = "abcdef";
printf("%0*s", 15,arr);
传入 *的值,控制 打印结果 为 15个字段宽度,不足用 0填充。结果如下:
做总结: %* ( 忽略指定输入)
%#x形式:
%x表示以十六进制表示(字母用小写表示) %x表示以十六进制表示(字母用大写表示)
如以下代码:
int a = 220;
printf("%x\n", a);//dc
printf("%X\n", a);//DC
打印结果为:
如果想要以 0x 的形式打印,则在 '%' 后面加 '#'即可,代码如下:
int a = 220;
printf("%#x\n", a);//0xdc
printf("%#X\n", a);//0XDC
结果为:
以上就是本博客所有内容,创作不易,希望多多支持