﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-wxj-program</title><link>http://www.cppblog.com/wxj-program/</link><description /><language>zh-cn</language><lastBuildDate>Tue, 09 Jun 2026 17:39:02 GMT</lastBuildDate><pubDate>Tue, 09 Jun 2026 17:39:02 GMT</pubDate><ttl>60</ttl><item><title>c++ 格式控制符</title><link>http://www.cppblog.com/wxj-program/archive/2012/08/22/187958.html</link><dc:creator>wxj-program</dc:creator><author>wxj-program</author><pubDate>Wed, 22 Aug 2012 06:40:00 GMT</pubDate><guid>http://www.cppblog.com/wxj-program/archive/2012/08/22/187958.html</guid><wfw:comment>http://www.cppblog.com/wxj-program/comments/187958.html</wfw:comment><comments>http://www.cppblog.com/wxj-program/archive/2012/08/22/187958.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/wxj-program/comments/commentRss/187958.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/wxj-program/services/trackbacks/187958.html</trackback:ping><description><![CDATA[<div class="multicntwrap">
<div class="multicnt">
<div>
<h3 class="title pre fs1"><span class="tcnt">格式控制符的完整格式</span>&nbsp;&nbsp;<span class="bgc0 fc07 fw0 fs0"></span></h3>
<p class="tdep clearfix nbw-act fc06" style="line-height: 20px"><span class="pleft"><span class="blogsep">2008-03-24 16:18:34</span><span class="blogsep">|&nbsp;&nbsp;分类：</span> <a class="fc03 m2a" title="编程备忘" href="http://lightseraph.blog.163.com/blog/#m=0&amp;t=1&amp;c=fks_095066093094083075081087074065081084085065080083082">编程备忘</a> <span class="blogsep phide" id="$_blogTagTitle">|&nbsp;&nbsp;标签：</span><span class="fc03 phide" id="$_blogTagInfo"></span> </span><span class="pright fc07 ztag"><span class="blogsep">|</span><span class="zihao fc03" id="$_fontswitch" __1009830942562__="ev_4383762458">字号<span class="zihaoshow  phide" id="$_fontsTypes"><span class="zihaoc bdc0"><span class="stag" __1009830942562__="ev_4315532115" __tabkey__="true" index="0"></span><span class="fc04 stag" __1009830942562__="ev_8520069446" __tabkey__="true" index="1">大</span><span class="fc04 stag selected js-fcurrent fc05" __1009830942562__="ev_8628888210" __tabkey__="true" index="2">中</span><span class="fc04 stag" __1009830942562__="ev_9550879399" __tabkey__="true" index="3">小</span></span></span></span></span><span class="pright pnt fc03" id="$_blog_subscribe" __1009830942562__="ev_3973408036"><span class="iblock icn0 icn0-919">&nbsp;</span><a class="m2a">订阅</a></span> </p></div></div></div>
<div></div>
<div class="nbw-blog-start"></div>
<div class="bct fc05 fc11 nbw-blog ztag js-fs2" __1009830942562__="ev_3508951256">
<p>printf的格式控制的完整格式：<br />%&nbsp; -&nbsp; 0&nbsp; m.n&nbsp; l或h&nbsp; 格式字符<br />下面对组成格式说明的各项加以说明：<br />&#9312;%：表示格式说明的起始符号，不可缺少。<br />&#9313;-：有-表示左对齐输出，如省略表示右对齐输出。<br />&#9314;0：有0表示指定空位填0,如省略表示指定空位不填。<br />&#9315;m.n：m指域宽，即对应的输出项在输出设备上所占的字符数。N指精度。用于说明输出的实型数的小数位数。为指定n时，隐含的精度为n=6位。<br />&#9316;l或h:l对整型指long型，对实型指double型。h用于将整型的格式字符修正为short型。<br /><br />－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－<br /><strong>格式字符</strong><br />格式字符用以指定输出项的数据类型和输出格式。<br />&nbsp;&#9312;d格式：用来输出十进制整数。有以下几种用法：<br />%d：按整型数据的实际长度输出。<br />%md：m为指定的输出字段的宽度。如果数据的位数小于m，则左端补以空格，若大于m，则按实际位数输出。<br />%ld：输出长整型数据。<br />&#9313;o格式：以无符号八进制形式输出整数。对长整型可以用"%lo"格式输出。同样也可以指定字段宽度用&#8220;%mo&#8221;格式输出。<br />例：<br />&nbsp;&nbsp; main()<br />&nbsp;&nbsp; { int a = -1;<br />&nbsp;&nbsp;&nbsp;&nbsp; printf("%d, %o", a, a);<br />&nbsp;&nbsp; }<br />&nbsp; 运行结果：-1,177777<br />&nbsp; 程序解析：-1在内存单元中（以补码形式存放）为(1111111111111111)2，转换为八进制数为(177777)8。<br />&#9314;x格式：以无符号十六进制形式输出整数。对长整型可以用"%lx"格式输出。同样也可以指定字段宽度用"%mx"格式输出。<br />&#9315;u格式：以无符号十进制形式输出整数。对长整型可以用"%lu"格式输出。同样也可以指定字段宽度用&#8220;%mu&#8221;格式输出。<br />&#9316;c格式：输出一个字符。<br />&#9317;s格式：用来输出一个串。有几中用法<br />%s：例如:printf("%s", "CHINA")输出"CHINA"字符串（不包括双引号）。<br />%ms：输出的字符串占m列，如字符串本身长度大于m，则突破获m的限制,将字符串全部输出。若串长小于m，则左补空格。<br />%-ms：如果串长小于m，则在m列范围内，字符串向左靠，右补空格。<br />%m.ns：输出占m列，但只取字符串中左端n个字符。这n个字符输出在m列的右侧，左补空格。<br />%-m.ns：其中m、n含义同上，n个字符输出在m列范围的左侧，右补空格。如果n&gt;m，则自动取n值，即保证n个字符正常输出。<br />&#9318;f格式：用来输出实数（包括单、双精度），以小数形式输出。有以下几种用法：<br />%f：不指定宽度，整数部分全部输出并输出6位小数。<br />%m.nf：输出共占m列，其中有n位小数，如数值宽度小于m左端补空格。&nbsp;<br />%-m.nf：输出共占n列，其中有n位小数，如数值宽度小于m右端补空格。<br />&#9319;e格式：以指数形式输出实数。可用以下形式：<br />%e：数字部分（又称尾数）输出6位小数，指数部分占5位或4位。<br />%m.ne和%-m.ne：m、n和&#8221;-&#8221;字符含义与前相同。此处n指数据的数字部分的小数位数，m表示整个输出数据所占的宽度。<br />&#9320;g格式：自动选f格式或e格式中较短的一种输出，且不输出无意义的零。<br /><br />－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－<br />关于printf函数的进一步说明：<br />如果想输出字符"%",则应该在&#8220;格式控制&#8221;字符串中用连续两个%表示，如:<br />printf("%f%%", 1.0/3);<br />输出0.333333%。<br /><br />－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－<br />对于单精度数，使用%f格式符输出时，仅前7位是有效数字，小数6位．<br />对于双精度数，使用%lf格式符输出时，前16位是有效数字，小数6位．</p>
<p><font color="#ff3300">######################################<font color="#0000ff">拾遗</font>########################################<br /></font><font color="#000000">由高手指点<br />对于m.n的格式还可以用如下方法表示（例）<br />char&nbsp;ch[20];<br />printf("%*.*s\n",m,n,ch);<br />前边的*定义的是总的宽度，后边的定义的是输出的个数。分别对应外面的参数m和n 。我想这种方法的好处是可以在语句之外对参数m和n赋值，从而控制输出格式。 </font></p>
<hr />
今天(06.6.9)又看到一种输出格式 %n 可以将所输出字符串的长度值赋绐一个变量, 见下例:<br /><br />int slen;<br /><br />printf("hello world%n", &amp;slen);<br /><br />执行后变量被赋值为11。<br /></div><img src ="http://www.cppblog.com/wxj-program/aggbug/187958.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/wxj-program/" target="_blank">wxj-program</a> 2012-08-22 14:40 <a href="http://www.cppblog.com/wxj-program/archive/2012/08/22/187958.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>