sprintf() 函数

将字串格式化命令。sprintf 是个变参函数,使用时经常出问题,而且只要出问题通常就是能导致程序崩溃的内存访 问错误,但好在由sprintf 误用导致的问题虽然严重,却很容易找出,无非就是那么几种情况,通 常用眼睛再把出错的代码多看几眼就看出来了。

参数说明及应用举例

sprintf格式的规格如下所示。[]中的部分是可选的。  

%[指定参数][标识符][宽度][.精度]指示符  若想输出`%'本身时, 请这样`%%'处理。  

1. 处理字符方向。负号时表示从后向前处理。   

2. 填空字元。 0 的话表示空格填 0;空格是内定值,表示空格就放着。   

3. 字符总宽度。为最小宽度。   

4. 精确度。指在小数点后的浮点数位数。


转换字符

%% 印出百分比符号,不转换。   

%c 整数转成对应的 ASCII 字元。   

%d 整数转成十进位。   

%f 倍精确度数字转成浮点数。   

%o 整数转成八进位。   

%s 整数转成字符串。   

%x 整数转成小写十六进位。   

%X 整数转成大写十六进位。


<?  

$money = 123.1  

$formatted = sprintf ("%06.2f", $money); // 此时变数 $ formatted 值为 "123.10"  

$formatted = sprintf ("%08.2f", $money); // 此时变数 $ formatted 值为 "00123.10"  

$formatted = sprintf ("%-08.2f", $money); // 此时变数

$ formatted 值为 "123.1000"  

$formatted = sprintf ("%.2f%%", 0.95 * 100); // 格式化为百分比  

?>   

¢%08.2f 解释:  

%开始符  

0是 "填空字元" 表示,如果长度不足时就用0来填满。  

8格式化后总长度  

2f小数位长度,即2位  

¢第3行值为"00123.10" 解释:  因为2f是(2位)+小数点符号(1)+前面123(3位)=6位,总长度为8位,故前面用[填空字元]0表示,即00123.10  

¢第4行值为"123.1000" 解释:  

-号为反向操作,然后填空字元0添加在最后面了












你可能感兴趣的:(sprintf() 函数)