*号在C语言格式化字符串中的作用

只要熟悉C语言的人,没有不熟悉格式化字符串的,因为基本上所有人学习C语言的第一个函数都是printf函数。当然printf所支持的格式化输出字符串也是每个学习C语言的人所熟悉。但是这几天在查看一个开源库代码的时候发现在格式化字符串中有“*”号,恕Simon愚钝,猛一看还真不知道什么意思。看来学习无止境阿,我们整天用的printf函数还是需要我们再进行深入学习的!

请看如下函数代码:

   1: #include <;stdio.h>
   2: 
   3: int main()
   4: {
   5:     int width = 10, precision = 2;
   6:     double pi = 3.1415926;
   7: 
   8:     printf("%*.*f", width, precision, pi);
   9: }
  10: 

上面的代码输出是什么呢?上面的*代表什么呢?让人迷惑阿!

把上面的代码转换一下,转换成另外一段代码大家熟悉了。上面的代码等价于下面的代码:

   1: #include <;stdio.h>
   2: 
   3: int main()
   4: {
   5:     double pi = 3.1415926;
   6: 
   7:     printf("%10.2f", pi);
   8: }
   9: 

如果问上面这段代码的输出是什么?大家肯定都知道是什么了吧。

在C语言的格式化字符串中的*的作用就是,从后面的参数中读取一个整数来代替这个*,以上面的例子为例:第一*将会读取width来代替*号,第二个*号将会读取下一个参数precision来代替*号。这样就等价printf("%10.2f", pi)了。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。