庫函式之sprintf與snprintf

2021-10-13 09:39:05 字數 2041 閱讀 5931

c 庫函式int sprintf(char *str, const char *format, ...)傳送格式化輸出到str所指向的字串。

int sprintf(char *str, const char *format, ...);

specifier(說明符)輸出c

字元d 或 i

有符號十進位制整數

e使用 e 字元的科學科學記數法(尾數和指數)

e使用 e 字元的科學科學記數法(尾數和指數)

f十進位制浮點數

g自動選擇 %e 或 %f 中合適的表示法

g自動選擇 %e 或 %f 中合適的表示法

o有符號八進位制

s字元的字串

u無符號十進位制整數

x無符號十六進製制整數

x無符號十六進製制整數(大寫字母)

p指標位址

n無輸出%字元

flags(標識)描述-

在給定的字段寬度內左對齊,預設是右對齊(參見 width 子說明符)。

+強制在結果之前顯示加號或減號(+ 或 -),即正數前面會顯示 + 號。預設情況下,只有負數前面會顯示乙個 - 號。

(space)

如果沒有寫入任何符號,則在該值前面插入乙個空格。

#與 o、x 或 x 說明符一起使用時,非零值前面會分別顯示 0、0x 或 0x。

與 e、e 和 f 一起使用時,會強制輸出包含乙個小數點,即使後邊沒有數字時也會顯示小數點。預設情況下,如果後邊沒有數字時候,不會顯示顯示小數點。

與 g 或 g 一起使用時,結果與使用 e 或 e 時相同,但是尾部的零不會被移除。

0在指定填充 padding 的數字左邊放置零(0),而不是空格(參見 width 子說明符)。

width(寬度)

描述(number)

要輸出的字元的最小數目。如果輸出的值短於該數,結果會用空格填充。如果輸出的值長於該數,結果不會被截斷。

*寬度在 format 字串中未指定,但是會作為附加整數值引數放置於要被格式化的引數之前。

.precision(精度)

描述.number

對於整數說明符(d、i、o、u、x、x):precision 指定了要寫入的數字的最小位數。如果寫入的值短於該數,結果會用前導零來填充。如果寫入的值長於該數,結果不會被截斷。精度為 0 意味著不寫入任何字元。

對於 e、e 和 f 說明符:要在小數點後輸出的小數字數。

對於 g 和 g 說明符:要輸出的最大有效位數。

對於 s: 要輸出的最大字元數。預設情況下,所有字元都會被輸出,直到遇到末尾的空字元。

對於 c 型別:沒有任何影響。

當未指定任何精度時,預設為 1。如果指定時不帶有乙個顯式值,則假定為 0。

.*精度在 format 字串中未指定,但是會作為附加整數值引數放置於要被格式化的引數之前。

length(長度)描述h

引數被解釋為短整型或無符號短整型(僅適用於整數說明符:i、d、o、u、x 和 x)。

l引數被解釋為長整型或無符號長整型,適用於整數說明符(i、d、o、u、x 和 x)及說明符 c(表示乙個寬字元)和 s(表示寬字元字串)。

l引數被解釋為長雙精度型(僅適用於浮點數說明符:e、e、f、g 和 g)。

如果成功,則返回寫入的字元總數,不包括字串追加在字串末尾的空字元。如果失敗,則返回乙個負數。

把格式化的資料寫入某個字串

緩衝區。

c 庫函式int snprintf(char *str, size_t size, const char *format, ...)設將可變引數(...)按照 format 格式化成字串,並將字串複製到 str 中,size 為要寫入的字元的最大數目,超過 size 會被截斷。

int snprintf ( char * str, size_t size, const char * format, ... );

將可變個引數(...)按照format格式化成字串,然後將其複製到str中。

snprintf 比 snprintf 更安全,防止記憶體溢位。

庫函式之malloc與new

從本質上來說,malloc linux上具體實現可以參考man malloc,glibc通過brk mmap 實現 是libc裡面實現的乙個函式,如果在source code中沒有直接或者間接include過stdlib.h,那麼gcc就會報出error malloc was not declare...

sscanf 函式與 sprintf 函式對比用例

sprintf函式 sprintf函式原型為 int sprintf char str,const char format,作用是格式化字串,具體功能如下所示 1 將數字變數轉換為字串。2 得到整型變數的16進製制和8進製字串。3 連線多個字串。char str 256 int data 1024 ...

sscanf 函式與 sprintf 函式對比用例

sprintf函式 sprintf函式原型為 int sprintf char str,const char format,作用是格式化字串,具體功能如下所示 1 將數字變數轉換為字串。2 得到整型變數的16進製制和8進製字串。3 連線多個字串。char str 256 int data 1024 ...