• 从C中变化过来的各种语言的printf输出格式


    在c、php和shell中经常可以碰到printf的使用,特别是在php中printf的相关变种有好几个:print、printf、sprintf、vprintf、vsprintf
        在这些语言中,printf基本上都是格式化输出字符串,而且基本都是在C的基础上演变来的,下面就以php中的这些做个记录
        虽然php中有这么多,但是其中他们的差别相对来说比较小
        1、print     
                  print “hello php”或 php(“hello php”)
              print 只是一个语言结构,并不是一个函数,就类似于echo;所以可以不使用() 而直接“”这样进行输出
              print和echo的区别是:print有返回值,总是返回 1。
     
        2、printf()     这是一个输出函数,所以不是和上面一样使用“”的方式使用
                    函数原型:int printf ( string $format [, mixed $args [, mixed $... ]] )
        3、sprintf()     基本和printf一样,重要的是两者之间的区别
                    函数原型:string sprintf ( string $format [, mixed $args [, mixed $... ]] )
              区别:
                        printf()将格式化的字符串输出到标准输出,返回输出字串的长度           
                        sprintf() 返回字符串,不会将字符串输出到浏览器上
        4、vprintf()和vsprintf()
                和上面的区别就是:它们只有两个参数:一个输出格式,一个变量数组。
                上面的printf()和sprintf()除了第一个固定的输出格式外,后面的参数变量,是根据字符串中需要输出的变量数据而对应确定的。
        现在,说说重点的输出格式(和C语言一样,并且shell也是这样),就是上面这些函数的第一个参数
            原型:
                %[padding-character][-][width][.precision]type
                    黑色表示必须的,[]中的表示可选的(根据实际需求)
                % 表示转换说明开始,注意要输出%时,采用 %% 的方式
                padding-character:填充字符,默认是空格填充,如果使用 空格或0 则可以不要在前面添加“ ' ”,填充其他字符就需要在前面加上一个单引号
                -    表示对齐方式,默认左对齐,- 则说明要右对齐,
                width    长度,这个长度是:整数部分+.+小数部分 的长度就是说:3.4是3个长度,30.4是4,就是这块按字符计算。
                   
                .precision 小数部分。. 表示小数点,precision表示小数点后保留几位。
            
               例如:
                     比如上面width是 10 ,padding-character是0,参数是:30.4,precision是 2,则type是f
                则输出什么?
                    0000030.40
     1 <?php
     2     /*
     3      * create_wangxb_20150116
     4      * print 相关知识点
     5      * 
     6      */
     7     echo "*** print 只是一个语言结构,并不是一个函数,就类似于echo;所以可以不使用() 而直接“”这样进行输出 ***<br/>";
     8     $res0 = print "hello php";
     9     echo "<br/>";
    10     $res1 = print("hello php");
    11     echo "<br/>*********** print和echo的区别是:print有返回值,总是返回 1 ****************<br/>";
    12     echo "print 返回值:res0=$res0<br/>print()返回值:res1=$res1 <br/> echo 是没有返回值的";
    13     echo "<br/>*********** 定义变量:num=3.4 ***********<br/>";
    14     $num = 30.4;
    15     echo $num;
    16     echo "<br/>";
    17     $res2 = printf('this number is %.2f',$num);
    18     echo "<br/>******** printf()将格式化的字符串输出到标准输出,返回输出字串的长度 ******<br/>";
    19     echo "printf() 返回值 res2: $res2<br/>";
    20     echo "<br/>******** sprintf() 返回字符串,不会将字符串输出到浏览器上 ******<br/>";
    21     $res3 = sprintf('this number is %.2f',$num);
    22     echo "sprintf() 返回值 res3(看清楚,这里我们输出的是返回值): $res3 <br/>";
    23     
    24     echo "<br/>比如上面width是 10 ,padding-character是0,参数是:30.4,precision是 2,则type是f<br/>";
    25     printf("num is %010.2f",$num);
    26 
    27     echo "<br/>padding-character 是 * 时,即非空格和0时<br/>";
    28     printf("num is %'*10.2f",$num);
    29 
    30     echo "<br/>第二项 [-] 时,即右对齐时<br/>";
    31     printf("num is %'*-10.2f",$num);
    32 
    33     echo "<br/>第三项 width 时,即长度改变,注意要算上小数点这个字符<br/>";
    34     printf("num is %'*-8.2f",$num);
    35 
    36     echo "<br/>第四项 precision 时,即小数点长度改变<br/>";
    37     printf("num is %'*-8.3f",$num);
    38 
    39     echo "<br/>第五项 type 时,即改变输出类型 d<br/>";
    40     printf("num is %'*-8d",$num);
    41 ?>

      输出:

      

  • 相关阅读:
    观光公交
    luogu 4779 【模板】
    最小生成树(luogu 3366)
    计算系数
    更新区间,求单点—— luogu 3368
    HDU
    HDU
    HDU
    HDU
    BFS
  • 原文地址:https://www.cnblogs.com/wxb0328/p/4228468.html
Copyright © 2020-2023  润新知