#include <stdio.h>
int sprintf(char * str,const char * format硫椰,...);
將格式化數(shù)據(jù)寫入字符串
與printf類似,使用指定的format萨蚕,在對(duì)應(yīng)的位置靶草,用相同的text替換掉,以組成一個(gè)字符串岳遥。與printf不同奕翔,它并不會(huì)打印在控制臺(tái),而是存儲(chǔ)在str指向的浩蓉,C string的形式buffer中派继。
buffer的大小應(yīng)足夠大,以包含整個(gè)生成的字符串捻艳。(使用snprintf較為安全)
字符串后自動(dòng)附加終止空字符驾窟。
在format參數(shù)后,附加的參數(shù)應(yīng)不小于需要指定format的個(gè)數(shù)认轨。
參數(shù)
str
指向 存儲(chǔ)生成的C-string緩沖區(qū) 的指針
緩沖區(qū)應(yīng)大于生成的字符串
format
與printf類似
%% 印出百分比符號(hào)绅络,不轉(zhuǎn)換。
%c 整數(shù)轉(zhuǎn)成對(duì)應(yīng)的 ASCII 字元嘁字。
%d 整數(shù)轉(zhuǎn)成十進(jìn)位恩急。
%f 倍精確度數(shù)字轉(zhuǎn)成浮點(diǎn)數(shù)。
%o 整數(shù)轉(zhuǎn)成八進(jìn)位纪蜒。
%s 整數(shù)轉(zhuǎn)成字符串衷恭。
%x 整數(shù)轉(zhuǎn)成小寫十六進(jìn)位。
%X 整數(shù)轉(zhuǎn)成大寫十六進(jìn)位霍掺。
...
根據(jù)不同的format
匾荆,函數(shù)可能需要一系列附加參數(shù)拌蜘,每個(gè)參數(shù)均包含一個(gè)可以替換對(duì)應(yīng)位置的format
的值。
附加參數(shù)的個(gè)數(shù)應(yīng)大于format
參數(shù)指定format
的個(gè)數(shù)牙丽。附加參數(shù)將會(huì)被函數(shù)忽略简卧。
返回值
如果成功,返回值為寫入buffer的總字符串的長(zhǎng)度烤芦,不包含結(jié)尾自動(dòng)附加的空字符举娩。
如果失敗,將會(huì)返回一個(gè)負(fù)數(shù)
例子
/* sprintf example */
#include <stdio.h>
int main()
{
char buffer[50];
int n, a = 5, b = 3;
n = sprintf(buffer, "%d plus %d is %d", a, b, a + b);
printf("[%s] is a string %d chars long\n", buffer, n);
return 0;
}