【转】Printf()输出格式控制

Code:
  1. #include<stdio.h>   
  2. int main()   
  3. {   
  4.     //for int   
  5.     int i=30122121;   
  6.     long i2=309095024l;   
  7.     short i3=30;   
  8.     unsigned i4=2123453;   
  9.     printf("%d,%o,%x,%X,%ld,%hd,%u/n",i,i,i,i,i2,i3,i4);//如果是:%l,%h,则输不出结果    
  10.     printf("%d,%ld/n",i,i2);//试验不出%ld和%d之间的差别,因为long是4bytes   
  11.     printf("%hd,%hd/n/n/n",i,i3);//试验了%hd和%d之间的差别,因为short是2bytes   
  12.   
  13.     //for string and char   
  14.     char ch1='d';   
  15.     unsigned char ch2=160;   
  16.     char *str="Hello everyone!";   
  17.     printf("%c,%u,%s/n/n/n",ch1,ch2,str);//unsigned char超过128的没有字符对应   
  18.        
  19.     //for float and double,unsigned and signed can not be used with double and float   
  20.     float fl=2.566545445F;//or 2.566545445f   
  21.     double dl=265.5651445;   
  22.     long double dl2=2.5654441454;   
  23.   
  24.   
  25.     //%g没有e格式,默认6位包括小数点前面的数,   
  26.     //%f没有e格式,默认6位仅只小数点后面包含6位   
  27.     //%e采用e格式,默认6位为转化后的小数点后面的6位   
  28.     printf("%f,%e,%g,%.7f/n",fl,dl,dl,dl);   
  29.     printf("%f,%E,%G,%f/n",fl,dl,dl,dl);//%F is wrong   
  30.     printf("%.8f,%.10e/n",fl,dl);   
  31.     printf("%.8e,%.10f/n/n/n",fl,dl);   
  32.   
  33.   
  34.     //for point    
  35.     int *iP=&i;   
  36.     char *iP1=new char;   
  37.     void *iP2;//dangerous!   
  38.     printf("%p,%p,%p/n/n/n",iP,iP1,iP2);   
  39.        
  40.     //其他知识:负号,表示左对齐(默认是右对齐);%6.3,6表示宽度,3表示精度   
  41.     char *s="Hello world!";   
  42.     printf(":%s: /n:%10s: /n:%.10s: /n:%-10s: /n:%.15s: /n:%-15s: /n:%15.10s: /n:%-15.10s:/n/n/n",   
  43.         s,s,s,s,s,s,s,s);   
  44.     double ddd=563.908556444;   
  45.     printf(":%g: /n:%10g: /n:%.10g: /n:%-10g: /n:%.15g: /n:%-15g: /n:%15.10g: /n:%-15.10g:/n/n/n",   
  46.         ddd,ddd,ddd,ddd,ddd,ddd,ddd,ddd);   
  47.   
  48.     //还有一个特殊的格式%*.* ,这两个星号的值分别由第二个和第三个参数的值指定   
  49.     printf("%.*s /n", 8, "abcdefgggggg");   
  50.     printf("%*.*f   /n", 3,3, 1.25456f);   
  51.     
  52.     return 0;   
  53. }  

1.转换说明符
      %a(%A)     浮点数、十六进制数字和p-(P-)记数法(C99)
      %c             字符
      %d             有符号十进制整数
      %f              浮点数(包括float和doulbe)
      %e(%E)     浮点数指数输出[e-(E-)记数法]
      %g(%G)     浮点数不显无意义的零"0"
      %i              有符号十进制整数(与%d相同)
      %u             无符号十进制整数
      %o             八进制整数    e.g.     0123
      %x(%X)      十六进制整数0f(0F)   e.g.   0x1234
      %p             指针
      %s             字符串
      %%            "%"

2.标志
      左对齐:"-"   e.g.   "%-20s"
      右对齐:"+"  e.g.   "%+20s"
      空格:若符号为正,则显示空格,负则显示"-"   e.g.   "%  6.2f"     
      #:对c,s,d,u类无影响;对o类,在输出时加前缀o;对x类,在输出时加前缀0x;
           对e,g,f 类当结果有小数时才给出小数点。

3.格式字符串(格式)
      [标志][输出最少宽度][.精度][长度]类型
     "%-md" :左对齐,若m比实际少时,按实际输出。
     "%m.ns":输出m位,取字符串(左起)n位,左补空格,当n>m or m省略时m=n
                      e.g.    "%7.2s"   输入CHINA
                                             输出"     CH"
     "%m.nf":输出浮点数,m为宽度,n为小数点右边数位
                      e.g.    "%3.1f"    输入3852.99
                                               输出3853.0
      长度:为h短整形量,l为长整形量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值