當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


C語言 snprintf用法及代碼示例


C語言stdio頭文件(stdio.h)中snprintf函數的用法及代碼示例。

用法:

int snprintf ( char * s, size_t n, const char * format, ... );
將格式化的輸出寫入大小合適的緩衝區
組成一個具有相同文本的字符串,如果格式用於printf,而不是將其打印,而是將內容存儲為C字串在所指向的緩衝區中s(服用n作為要填充的最大緩衝區容量)。

如果結果字符串長於n-1字符,其餘的字符將被丟棄而不存儲,而是計算該函數返回的值。

寫入內容後會自動添加一個終止的空字符。

之後格式參數,該函數至少需要與所需數量一樣多的附加參數格式

參數

s
指向存儲結果C-string的緩衝區的指針。
緩衝區的大小至少應為n字符。
n
緩衝區中要使用的最大字節數。
生成的字符串的長度最大為n-1,為其他終止空字符留出空間。
size_t是無符號整數類型。
format
包含格式字符串的C字符串,其格式與格式printf(參考printf有關詳細信息)。
... (additional arguments)
取決於格式字符串,函數可能需要一係列附加參數,每個參數都包含一個用於替換a的值格式說明符在裏麵格式字符串(或指向存儲位置的指針,用於n)。
這些參數至少應與格式說明符。該函數將忽略其他參數。

返回值

如果要寫的字符數n足夠大,不算終止空字符
如果發生編碼錯誤,則返回負數。
請注意,僅當此返回值是非負且小於n,字符串已被完全寫入。

示例

/* snprintf example */
#include <stdio.h>

int main ()
{
  char buffer [100];
  int cx;

  cx = snprintf ( buffer, 100, "The half of %d is %d", 60, 60/2 );

  if (cx>=0 && cx<100)      // check returned value

    snprintf ( buffer+cx, 100-cx, ", and the half of that is %d.", 60/2/2 );

  puts (buffer);

  return 0;
}


輸出:
The half of 60 is 30, and the half of that is 15.

有關格式化的更多示例,請參見printf

相關用法


注:本文由純淨天空篩選整理自C標準庫大神的英文原創作品 C snprintf function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。