首页 » PHP教程 » phpprintf技巧_若何运用 printf 来格式化输出 Linux 中国

phpprintf技巧_若何运用 printf 来格式化输出 Linux 中国

访客 2024-10-23 0

扫一扫用手机浏览

文章目录 [+]

来理解一下 printf ,一个神秘的、灵巧的和功能丰富的函数,可以更换 echo、print 和 cout。

• 来源:linux.cn • 作者:Seth Kenlon • 译者:郑 •

phpprintf技巧_若何运用 printf 来格式化输出  Linux 中国

(本笔墨数:3753,阅读时终年夜约:5 分钟)

phpprintf技巧_若何运用 printf 来格式化输出  Linux 中国
(图片来自网络侵删)

当我开始学习 Unix 时,我很早就打仗到了 echo 命令。
同样,我最初的 Python 课程也涉及到了 print 函数。
再想起学习 C++ 和 Java 时学到 cout 和 systemout。
彷佛每种措辞都骄傲地流传宣传拥有一种方便的单行输出方法,并恐怕这种办法要过期一样宣扬它。

但是当我翻开中级教程的第一页后,我碰着了 printf,一个晦涩难懂的、神秘莫测的,又出奇灵巧的函数。
本文一反向初学者隐蔽 printf 这个令人费解的传统,旨在先容这个不起眼的 printf 函数,并阐明如何在险些所有措辞中利用它。

printf 简史

术语 printf 代表“ 格式化打印(print formatted)”,它可能最早涌现 Algol 68 编程措辞中。
自从它被纳入到 C 措辞后,printf 已经在 C++、Java、Bash、PHP 中一次次重新实现,并且很可能在你最喜好的 “后 C” 措辞中再次涌现。

显然,它很受欢迎,但很多人认为它的语法很繁芜,尤其是与 echo 或 print 或 cout 等替代的函数比较尤为明显。
例如,这是在 Bash 中的一个大略的 echo 语句:

$ echo hellohello$

这是在 Bash 中利用 printf 得到同样结果:

$ printf "%s\n" hellohello$

但是所增加的繁芜性反而让你拥有很多功能,这是为什么 printf 值得学习的确切缘故原由。

printf 输出

在 printf 背后的基本思想是:它能够基于与内容分离的样式信息来格式化输出。
例如,这里是 printf 认可的视作分外字符的特定序列凑集。
你喜好的措辞可能会有或多或少的序列,但是常日包含:

\n: 新行\r: 回车换行\t: 水平制表符\NNN: 一个包含一个到三个数字,利用八进制值表示的分外字节

例如:

$ printf "\t\123\105\124\110\n" SETH$

在这个 Bash 示例中, printf 渲染一个制表符后,然后是分配给四个八进制值字符串的 ASCII 字符,并以一个天生一个新行(\n)的掌握序列结束。

如果同样利用 echo 来输出会产生更多的字符:

$ echo "\t\123\105\124\110\n"\t\123\105\124\110\n$

利用 Python 的 print 函数来完成同样的任务,你会创造 Python 的 print 命令比你想象的要强大:

>>> print("\t\123\n") S>>>

显然,Python 的 print 包含传统的 printf 特性以及大略的 echo 或 cout 的特性。

不过,这些示例包括的只是笔墨字符,只管在某些情形下它们也很有用,但它们可能是 printf 最不主要的部分。
printf 的真正的威力在于格式化解释。

利用 printf 格式化输出

格式化解释符因此一个百分号(%)开头的字符。

常见的格式化解释符包括:

%s: 字符串%d: 数字%f: 浮点数字%o: 一个八进制的数字

这些格式化解释符是 printf 语句的占位符,你可以利用一个在其它地方供应的值来更换你的 printf 语句中的占位符。
这些值在哪里供应取决于你利用的措辞和它的语法,这里有一个大略的 Java 例子:

string var="hello\n";system.out.printf("%s", var);

把这个代码包裹在适当的样板文件中,在实行后,将呈现:

$ ./examplehello$

但是,当一个变量的内容变动时,故意思的地方就来了。
假设你想基于不断增加的数字来更新输出:

#include <stdio.h>int main() { int var=0; while ( var < 100) { var++; printf("Processing is %d% finished.\n", var); } return 0;}

编译并运行:

Processing is 1% finished.[...]Processing is 100% finished.

把稳,在代码中的两个 % 将被解析为一个打印出来的 % 符号。

利用 printf 限定小数位数

数字也可以是很繁芜,printf 供应很多格式化选项。
你可以对浮点数利用 %f 限定打印出多少个小数位。
通过把一个点(.)和一个限定的数放置在百分符号和 f 之间, 你可以见告 printf 打印多少位小数。
这是一个大略的用 Bash 写的简练示例:

$ printf "%.2f\n" 3.1415193.14$

类似的语法也适用于其它的措辞。
这里是一个 C 措辞的示例:

#include <math.h>#include <stdio.h>int main() { fprintf(stdout, "%.2f\n", 4 atan(1.0)); return 0;}

对付三位小数,利用 .3f ,依次类推。

利用 printf 来在数字上添加逗号

由于位数大的数字很难解读,以是常日利用一个逗号来断开大的数字。
你可以在百分号和 d 之间放置一个撇号('),让 printf 根据须要添加逗号:

$ printf "%'d\n" 10241,024$ printf "%'d\n" 10246011,024,601$利用 printf 来添加前缀零

printf 的另一个常用的用法是对文件名称中的数字逼迫实施一种特定的格式。
例如,如果你在一台打算机上有 10 个按顺序排列的文件,打算机可能会把 10.jpg 排在 1.jpg 之前,这可能不是你的本意。
当你以编程的办法写一个到文件时,你可以利用 printf 来用前缀为 0 的字符形成文件名称。
这是一个大略的用 Bash 写的简练示例:

$ printf "%03d.jpg\n" {1..10}001.jpg002.jpg[...]010.jpg

把稳:每个数字最多利用 3 位数字。

利用 printf

正如这些 printf 示例所显示,包括掌握字符,尤其是 \n ,可能会冗长,并且语法相对繁芜。
这便是为什么开拓像 echo 和 cout 之类的快捷办法的缘故原由。
不过,如果你时时时地利用 printf ,你就会习气于这种语法,并且它也会变成你的习气。
我不认为 printf 有任何情由成为你在日常活动中打印时的首选,但是它是一个很好的工具,当你须要它时,它不会拖累你。

花一些韶光学习你所选择措辞中的 printf,并且当你须要时就利用它。
它是一个强有力的工具,你不会后悔随时可用的工具。

via: opensource.com

作者: Seth Kenlon 选题: lujun9972 译者: robsean 校正: wxy

本文由 LCTT 原创编译, Linux中国 名誉推出

点击“理解更多”可访问文内链接
标签:

相关文章

执业药师试卷代码解码药师职业发展之路

执业药师在药品质量管理、用药安全等方面发挥着越来越重要的作用。而执业药师考试,作为进入药师行业的重要门槛,其试卷代码更是成为了药师...

PHP教程 2025-02-18 阅读1 评论0

心灵代码主题曲唤醒灵魂深处的共鸣

音乐,作为一种独特的艺术形式,自古以来就承载着人类情感的表达与传递。心灵代码主题曲,以其独特的旋律和歌词,唤醒了无数人的灵魂深处,...

PHP教程 2025-02-18 阅读0 评论0

探寻福建各市车牌代码背后的文化内涵

福建省,地处我国东南沿海,拥有悠久的历史和丰富的文化底蕴。在这片充满魅力的土地上,诞生了许多具有代表性的城市,每个城市都有自己独特...

PHP教程 2025-02-18 阅读1 评论0

探寻河北唐山历史与现代交融的城市之光

河北省唐山市,一座地处渤海之滨,拥有悠久历史和独特文化的城市。这里既是古丝绸之路的起点,也是中国近代工业的发源地。如今,唐山正以崭...

PHP教程 2025-02-18 阅读0 评论0