snprintf 函式用法

2021-07-30 15:06:37 字數 917 閱讀 1770

snprintf()函式用於將格式化的資料寫入字串,其原型為:

int snprintf(char *str, int n, char * format [, argument, ...]);

【引數】str為要寫入的字串;n為要寫入的字元的最大數目,超過n會被截斷;format為格式化字串,與printf()函式相同;argument為變數。

【返回值】成功則返回引數str 字串長度,失敗則返回-1,錯誤原因存於errno 中。

snprintf()可以認為是sprintf()的公升級版,比sprintf()多了乙個引數,能夠控制要寫入的字串的長度,更加安全,只要稍加留意,不會造成緩衝區的溢位。

snprintf()與sprintf()使用方法類似,請參考:c語言sprintf()函式

注意:snprintf()並不是標c中規定的函式,但是在許多編譯器中,廠商提供了其實現的版本。

在gcc中,該函式名稱就snprintf(),而在vc中稱為_snprintf()。由於不是標準函式,沒有乙個統一的標準來規定該函式的行為,所以導致了各廠商間的實現版本可能會有差異。

差異發生在引數 n。在gcc中,引數n是要向str寫入3個字元,包括'\0'字元;在vc中,引數n是要寫入的字串的總字元數。

在gcc中執行如下程式:

#include

int main()

輸出:7

ab在vc中執行如下程式:

#include

int main()

輸出:-1

abc從輸出結果可以知道:

gcc中的引數n表示向str中寫入n個字元,包括'\0'字元,並且返回實際的字串長度。

vc中的引數n表示會向str中寫入n個字元,不包括'\0'字元,並且不會在字串末尾新增'\0'符。當字串長度超過引數n時,函式返回-1,以表示可能導致錯誤。

snprintf函式用法

int snprintf char restrict buf,size t n,const char restrict format,函式說明 最多從源串中拷貝n 1個字元到目標串中,然後再在後面加乙個0。所以如果目標串的大小為n的話,將不會溢位。函式返回值 若成功則返回欲寫入的字串長度,若出錯則返...

snprintf函式用法

int snprintf char restrict buf,size t n,const char restrict format,函式說明 最多從源串中拷貝n 1個字元到目標串中,然後再在後面加乙個0。所以如果目標串的大小為n的話,將不會溢位。函式返回值 若成功則返回欲寫入的字串長度,若出錯則返...

snprintf函式用法

int snprintf char restrict buf,size t n,const char restrict format,函式說明 最多從源串中拷貝n 1個字元到目標串中,然後再在後面加乙個0。所以如果目標串的大小為n 的話,將不會溢位。函式返回值 若成功則返回欲寫入的字串長度,若出錯則...