int sprintf( char *buffer, const char *format, [ argument] … );
buffer:char型指標,指向將要寫入的字串的緩衝區。
format:格式化字串。
[argument]...:可選引數,可以是任何型別的資料。
返回值:字串長度(strlen)
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 的強大功能很少會讓你失望。由於sprintf 跟printf 在用法上幾乎一樣,只是列印的目的地不同而已,前者列印到字串中,後者則直接在命令列上輸出。這也導致sprintf 比printf 有用得多。
sprintf 是個變參函式,定義如下:
int sprintf( char *buffer, const char *format [, argument] ... );
除了前兩個引數型別固定外,後面可以接任意多個引數。而它的精華,顯然就在第二個引數:
格式化字串上。
printf 和sprintf 都使用格式化字串來指定串的格式,在格式串內部使用一些以「%」開頭的格式說明符(format specifications)來佔據乙個位置,在後邊的變參列表中提供相應的變數,最終函式就會用相應位置的變數來替代那個說明符,產生乙個呼叫者想要的字串。
sprintf 最常見的應用之一莫過於把整數列印到字串中,所以,sprintf 在大多數場合可以替代
itoa。
如://把整數123 列印成乙個字串儲存在s 中。
sprintf(s, "%d", 123); //產生"123"
可以指定寬度,不足的左邊補空格:
sprintf(s, "%4d%4d", 123, 4567); //產生:" 1234567"
當然也可以左對齊:
sprintf(s, "%-4d%4d", 123, 4567); //產生:"123 4567"
sprintf 格式化字串
sprintf 函式把格式化的字串寫入變數中。arg1 arg2 引數將被插入到主字串中的百分號 符號處。該函式是逐步執行的。在第乙個 符號處,插入 arg1,在第二個 符號處,插入 arg2,依此類推。注釋 如果 符號多於 arg 引數,則您必須使用佔位符。佔位符位於 符號之後,由數字和 組成。請...
格式化字串 sprintf函式
有時候我們需要格式化乙個字串的內容,這時侯使用sprintf 函式特別方便,它的使用格式如下 int sprintf char buffer,const char format,argument buffer代表字串指標,format為格式化的樣式,其餘為引數。例如 char s 105 sprin...
sprintf 格式化字串函式
基本語法格式 sprintf 格式化型別 str1 str2 先別急我會乙個個慢慢說 先看一下型別參照表,也就是要轉換成什麼型別的格式 先舉個最簡單的案例 案例1.格式化多個變數 要點 s 符號和後面屬性符號 s 總稱為插入標記組合,也就是把後面準備進行格式化的值 str1 替換在這個位置 hell...