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

时间:2022-09-20 17:26:09
在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
 <?php
/*
* create_wangxb_20150116
* print 相关知识点
*
*/
echo "*** print 只是一个语言结构,并不是一个函数,就类似于echo;所以可以不使用() 而直接“”这样进行输出 ***<br/>";
$res0 = print "hello php";
echo "<br/>";
$res1 = print("hello php");
echo "<br/>*********** print和echo的区别是:print有返回值,总是返回 1 ****************<br/>";
echo "print 返回值:res0=$res0<br/>print()返回值:res1=$res1 <br/> echo 是没有返回值的";
echo "<br/>*********** 定义变量:num=3.4 ***********<br/>";
$num = 30.4;
echo $num;
echo "<br/>";
$res2 = printf('this number is %.2f',$num);
echo "<br/>******** printf()将格式化的字符串输出到标准输出,返回输出字串的长度 ******<br/>";
echo "printf() 返回值 res2: $res2<br/>";
echo "<br/>******** sprintf() 返回字符串,不会将字符串输出到浏览器上 ******<br/>";
$res3 = sprintf('this number is %.2f',$num);
echo "sprintf() 返回值 res3(看清楚,这里我们输出的是返回值): $res3 <br/>"; echo "<br/>比如上面width是 10 ,padding-character是0,参数是:30.4,precision是 2,则type是f<br/>";
printf("num is %010.2f",$num); echo "<br/>padding-character 是 * 时,即非空格和0时<br/>";
printf("num is %'*10.2f",$num); echo "<br/>第二项 [-] 时,即右对齐时<br/>";
printf("num is %'*-10.2f",$num); echo "<br/>第三项 width 时,即长度改变,注意要算上小数点这个字符<br/>";
printf("num is %'*-8.2f",$num); echo "<br/>第四项 precision 时,即小数点长度改变<br/>";
printf("num is %'*-8.3f",$num); echo "<br/>第五项 type 时,即改变输出类型 d<br/>";
printf("num is %'*-8d",$num);
?>

  输出:

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

从C中变化过来的各种语言的printf输出格式的更多相关文章

  1. C语言的printf输出格式控制

    C语言的printf输出格式控制 printf大家都耳熟能详,但是能真正将其用法弄透的估计很少见. 转一篇,改天整理. 1.转换说明符 %a(%A)     浮点数.十六进制数字和p-(P-)记数法( ...

  2. 概率图模型 基于R语言 这本书中的第一个R语言程序

    概率图模型 基于R语言 这本书中的第一个R语言程序 prior <- c(working =0.99,broken =0.01) likelihood <- rbind(working = ...

  3. Immutable Collections&lpar;3&rpar;Immutable List实现原理&lpar;中&rpar;变化中的不变

    Immutable  Collections(3)Immutable List实现原理(中)变化中的不变 文/玄魂 前言 在上一篇文章(Immutable Collections(2)Immutabl ...

  4. 用CBrother将excel中的数据转换为C语言头文件

    用CBrother将excel中的数据转换为C语言头文件 最近在工作中,产品这边总是要调整一些参数,而我们在这一块要求所有的配置必须用宏定义来做,因为不同型号直接硬编码写死在代码里,但是一但数量大了, ...

  5. iconv简介(1、字符串&vert;文件字符转换:iconv用于将一种已知的字符集文件转换成另一种已知的字符集文件)(2、编程语言函数功能的相似性:iconv不仅再php中有用,而且c语言中也有用,还有linux等)

    iconv简介(1.字符串|文件字符转换:iconv用于将一种已知的字符集文件转换成另一种已知的字符集文件)(2.编程语言函数功能的相似性:iconv不仅再php中有用,而且c语言中也有用,还有lin ...

  6. (42)嵌入式项目中常用到的C语言技能总结

    嵌入式项目中常用到的C语言技能 1.指针 .结构体. 枚举. 联合.数组.字符串.链表七个专题 2.结构体指针.结构体的多重嵌套[结构体中嵌套结构体.结构体中嵌套枚举.联合体.结构体中嵌套函数指针.一 ...

  7. R语言中的线性判别分析&lowbar;r语言 线性判别分析

    R语言中的线性判别分析_r语言 线性判别分析 在R语言中,线性判别分析(Liner Discriminant Analysis,简称LDA),依靠软件包MASS中有线性判别函数lqa()来实现.该函数 ...

  8. ALSA 声卡 驱动 linux 4&period;1&period;36 中变化

    linux 4.1.36 中变化 1ret = request_irq(IRQ_DMA2, s3c2440_dma2_irq, IRQF_DISABLED, "myalsa for play ...

  9. IOS学习笔记07---C语言函数-printf函数

    IOS学习笔记07---C语言函数-printf函数 0 7.C语言5-printf函数 ------------------------- ----------------------------- ...

随机推荐

  1. h5 hdf5 文件转 tif 流程

    由于需要对h5(hdf5)格式的dem数据进行拼接,但是arcgis不能识别h5的地理参考信息,所以先将h5文件转为带地理参考的tif文件,然后再进行拼接. 工具:arcgis+envi 1.用arc ...

  2. 微信公共平台开发2 &period;net

    成功的走出第一步后,我们紧接着趁热打铁开始下一步: 成为了开发者之后微信平台会给您AppId和AppSecret,在订阅号中是没有的,所以因该申请一下服务号, 若没有请注意上一篇http://www. ...

  3. w5cValidator【AngularJS】 2&period;0 版本发布

    w5cValidator 插件基于angular原有的表单验证,在原有的基础上扩展了一些错误提示的功能,让大家不用在每个表单上写一些提示信息的模板,专心的去实现业务逻辑. 代码地址:https://g ...

  4. &period;net 可枚举类型的构建方法

    数组可以使用foreach遍历数组,其实只要实现GetEnumertor方法的类型都可以使用foreach结构遍历数组. 首先看下代码: //笔类 public class Pencil { publ ...

  5. FZU 2195 检查站点

    求出根节点到每个叶子节点的距离,找到最大的.然后总权值减去最大叶子距离就是答案. GNU C++ AC Visual C++  TLE #include<stdio.h> #include ...

  6. 【开源】【前后端分离】【优雅编码】分享我工作中的一款MVC&plus;EF&plus;IoC&plus;Layui前后端分离的框架——【NO&period;1】框架概述

    写博客之前总想说点什么,但写的时候又忘了想说点什么,算了,不说了,还是来送福利吧. 今天是来分享我在平时工作中搭建的一套前后端分离的框架. 平时工作大多时候都是在做管理类型的软件开发,无非就是增.删. ...

  7. Java初学者容易犯的代码错误

    1. 不会判断空 空指针异常是所有Java初学者接触最多的异常,没有之一.原因是,你们拿到一个对象后容易不假思索的直接使用(直接给这个对象的属性赋值,直接调用这个对象的方法等),不报异常才怪呢!下面是 ...

  8. 将web项目导入到eclipse中常见错误

     将web项目导入到eclipse中常见错误  错误1:string cannot be resolved to a type  原因:这种情况一般是因为你的JDK版本没有设置好,或者设置的有不一致的 ...

  9. node&period;js中path路径模块的使用

    path模块是node.js中处理路径的核心模块.可以很方便的处理关于文件路径的问题. join() 将多个参数值合并成一个路径 const path = require('path'); conso ...

  10. &lbrack;Q&amp&semi;A&rsqb; 解决 SBT 初始化或下载 jar 包速度慢的问题

    原文地址:https://www.cnblogs.com/memento/p/9153012.html 在 C:\Users\用户名\.sbt 目录下添加一个 "repositories&q ...