深入讲解printf和scanf格式控制符 您所在的位置:网站首页 scanf输入字符串时可以输入空格吗 深入讲解printf和scanf格式控制符

深入讲解printf和scanf格式控制符

#深入讲解printf和scanf格式控制符 | 来源: 网络整理| 查看: 265

说到printf和scanf函数想必大家都不陌生吧,大多数初学者都了解一个是输入函数一个是输出函数,但是很多人对其了解仅限于此,其实不然。printf作为输出函数,其输出的方式有多种多样,同样scanf函数也是如此,不同的输入和输出方式,其在屏幕上的输出效果也会不同,今天这篇博客定会让你耳目一新,并且彻底搞明白!!!

printf

常见的格式控制符:

%d:用于输出整型数(整型指本质为整型的数,如int、short等)

%c:用于输出一个字符

%s:用于输出一个字符串

%o:以无符号八进制形式输出整数值

%x:以无符号十六进制形式输出整数值

%u:以无符号形式输出十进制数

%f:用来输出浮点数(float),精度为6位小数,第七位四舍五入。

%p:指针的值(即地址)

这是一些常见的输出字符格式串,这里不在进行详细介绍,本篇博客主要讲解一些关于输出占位和对齐的相关问题!

1.占位长度与格式串搭配 (1)与%d搭配

%md:m为指定的输出数据的位宽。如果数据的位数小于m,则左端补以空格(因为默认右对齐,所以左补用以占位);如果数据的位数大于m,则以数据的实际位数输出。示例如下:

int main() { int a = 1234567; printf("%4d\n", a); printf("%10d\n", a); return 0; }

深入讲解printf和scanf格式控制符  

 第一个输出位数小于数据实际长度,此时以数据实际长度进行输出,故结果为1234567;

第二个输出位数大于数据实际长度,此时输出数据时按照右对齐,左端以空格补齐;

(2)与%s搭配

 %ms:m为指定的输出字符串的宽度。如果字符串的位数小于m,则左端补空格;如果字符串的位数大于m,则以实际的字符串长度输出。示例如下:

int main() { char arr[] = "abcdef"; printf("%5s\n", arr); printf("%10s\n", arr); return 0; }

深入讲解printf和scanf格式控制符

第一个字符串输出位数小于字符串实际长度,此时以字符串实际长度进行输出,故结果为abcdef;

第二个字符串输出位数大于字符串实际长度,此时字符串按照右对齐进行输出,左端以空格补齐;

(3)

%m.ns:意为从左向右截取字符串的n位输出到占位m的位置,左补空。示例如下:

int main() { char arr[] = "abcdef"; printf("%3.4s\n", arr); printf("%6.4s\n", arr); return 0; }

深入讲解printf和scanf格式控制符

 第一个%3.4s,输出的字符串位数为m=3,而截取的字符串位数为n=4,mn,以截取的实际位数按照右对齐输出,其左端空格补齐;

(4)与%f搭配

%m.nf:m为占位宽度,n为小数点右边的位数,浮点数的规则较字符串比起来更为复杂些,你不但要关注浮点数的总占位宽,还要关注小数的占位宽。

整数部分完整输出,唯一要注意的是:

当m>(整数位宽+小数点位宽+n)时,左补空。

int main() { float a = 1; float b = 3.14; float c = 3.14159; printf("%f\n", a); printf("%4.4f", b); printf("%8.4f\n", b); printf("%4.4f\n", c); return 0; }

深入讲解printf和scanf格式控制符

 第一个%f,即正常输出小数点后6为,不满6为的话直接用0补齐,故结果为1.000000;

第二个%4.4f,浮点数所占位数为m=46(浮点数总位数)则按照又对齐输出,左端用空格补齐,且小数点后为4位,不满4位则用0补齐;

第四个%4.4f,浮点数所占位数为m=4



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有