程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> printf()家族詳解

printf()家族詳解

編輯:關於C語言
 

先介紹一個現在用得正爽的sprintf。。。

原型:int sprintf(char *buffer, const char *format, ...);

返回值:等於向buffer中寫入的字節數


函數功能:本函式用來將字串格式化。參數 format 是轉換的格式,以百分比符號 % 開始到轉換字符為止。而在轉換的格式間依序包括了


1. 填空字元。0 的話表示空格填 0;空格是內定值,表示空格就放著。

2. 對齊方式。內定值為向右對齊,負號表向左對齊。

3. 欄位寬度。為最小寬度。

4. 精確度。指在小數點後的浮點數位數。

型態,見下表

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
轉換字符
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
% 印出百分比符號,不轉換。
b 整數轉成二進位。
c 整數轉成對應的 ASCII 字元。
d 整數轉成十進位。
f 倍精確度數字轉成浮點數。
o 整數轉成八進位。
s 整數轉成字串。
x 整數轉成小寫十六進位。
X 整數轉成大寫十六進位。
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

例子

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

使用范例


<?
$money1 = 68.75;
$money2 = 54.35;
$money = $money1 + $money2;
// 此時變數 $money 值為 "123.1";
$formatted = sprintf ("%01.2f", $money);
// 此時變數 $ formatted 值為 "123.10"
?>

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

這個 %01.2f 是什麼意思呢?

首先 這個 % 符號是開始的意思,他寫在最前面表示指定格式要開始了。 也就是 "起始字符", 直到出現 "轉換字符" 為止,就算格式終止。

然後 跟在 % 符號 後面的是 0 這個零是 "填空字元" 表示,如果位置空著 就用0來填滿。
在 0 後面的是 1 這個 1 是規定,小數點前面的數字占位要有1位以上。

如果把 1 改成 2 如果 $money 的值為 1.23 ,則 $formatted 的值將為 01.23
因為,在小數點前面的數字只占了1位,按照上面所規定的格式,小數點前數字應該占2位,現在只有1位,所以,用0來填滿。

到目前,在 %01 後面的 .2 (點2) 就很好理解了,它的意思是,規定,小數點後的數字,必需占2位. 如果這時候,$money 的值為 1.234,則 $formatted 的值將為 1.23。
為什麼 4 不見了呢? 因為,在小數點後面 按照上面的規定,必需且僅能占2位。 可是 $money 的值中,小數點占了3位,所以,4 被去掉了,只剩下 23。

最後,以 f "轉換字符" 結尾,其他轉換字符請自行參考上面的轉換字符列表。

關於對齊

如果在 % 起始符號後面 加上 - (負號) 則,將會把數字以向右對齊的方式進行處理。

列子


<?
$money = 1.4;

$formatted = sprintf ("%-02.2f", $money);

echo $formatted;
?>

這時候,$formatted 將不會再是 01.40 而是 1.400

**************************************************************************** 更詳細的如下:

以下來自:http://www.chinaunix.net/jh/23/24825.html

<一>;

1.前言

  在gcc編程中,我們比較經常用到的字符格式化輸出函數是printf的,實際上gcc繼承了c語言處理字符具有強大功能的風格,它提供了一系列的格式化輸出函數,主要存在兩個庫函數文件stdio.h/ stdarg.h中,具體函數如下:

#include printf, int printf(const char *format, ...);fprintf, int fprintf(FILE *stream, const char *format, ...);sprintf, int sprintf(char *str, const char *format, ...);snprintf, int snprintf(char *str, size_t size, const char *format, ...);#include vprintf, vprintf(const char *format, va_list ap);vfprintf, vfprintf(FILE *stream, const char *format, va_list ap);vsprintf, int vsprintf(char *str, const char *format, va_list ap);

  其中:

  printf和vprintf函數主要是向一個標准輸出設備或標准的字符流輸出格式化後的字符。  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved