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


C++ sprintf()用法及代碼示例

在本教程中,我們將借助示例了解 C++ sprintf() 函數。

C++ 中的sprintf() 函數用於將格式化字符串寫入字符串緩衝區。它在cstdio 頭文件中定義。

示例

#include <cstdio>
#include <iostream>
using namespace std;

int main() {
  char buffer[100];
  int age = 23;

  // print "My age is " and age variable to buffer variable
  sprintf(buffer, "My age is %d", age);

  // print buffer variable
  cout << buffer;
    
  return 0;
}

// Output: My age is 23

sprintf() 語法

用法:

sprintf(char* buffer, const char* format, ...);

這裏,

  • buffer 是我們需要寫入的字符串緩衝區
  • format 是要寫入字符串緩衝區的字符串
  • 上麵代碼中的 ... 表示您可以將多個參數傳遞給 sprintf()

參數:

sprintf() 函數采用以下參數:

  • buffer- 指向要寫入結果的字符串緩衝區的指針。
  • format- 指向寫入字符串緩衝區的空終止字符串 (C-string) 的指針。它由字符和可選的格式說明符組成,以%.
  • ...- 指定要打印的數據的其他附加參數。它們根據格式說明符按順序出現。

返回:

sprintf() 函數返回:

  • 成功- 為足夠大的緩衝區寫入的字符數(不包括終止空字符'\0')
  • 失敗時- 負值

sprintf() 原型

cstdio 頭文件中定義的sprintf() 函數的原型是:

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

格式說明符

format參數printf()可以包含格式說明符開始於%.這些說明符被格式字符串後麵的各個變量的值替換。

格式說明符包含以下部分:

  • 領先的% 符號
  • flags- 一個或多個修改轉換行為的標誌(可選)
    • -:左對齊字段內的結果。默認情況下它是右對齊的。
    • + :結果的符號附加到值的開頭,即使是正結果也是如此。
    • space: 如果沒有符號,則在結果的開頭附加一個空格。
    • # :執行另一種轉換形式。
    • 0 :用於整數和浮點數。前導零用於填充數字而不是空格。
  • width - 一個可選的 * 或整數值,用於指定最小寬度字段。
  • precision - 一個可選字段,由 . 後跟 * 或整數或無以指定精度。
  • length - 一個可選的長度修飾符,用於指定參數的大小。
  • specifier - 轉換格式說明符。

sprintf() 格式說明符原型

sprintf() 格式說明符的一般原型是:

%[flags][width][.precision][length]specifier

常用格式說明符

下表列出了一些常用的格式說明符:

格式說明符 說明
% 一個 % 後跟另一個 % 字符將 % 打印到屏幕上
c 寫入單個字符
s 寫入一個字符串
di 將有符號整數轉換為十進製表示
o 將無符號整數轉換為八進製表示
Xx 將無符號整數轉換為十六進製表示
u 將無符號整數轉換為十進製表示
Ff 將浮點數轉換為十進製表示
Ee 將浮點數轉換為十進製 index 表示法
Aa 將浮點數轉換為十六進製 index
Gg 將浮點數轉換為十進製或十進製 index 表示法
n - 返回到目前為止寫入的字符數
- 結果寫入參數指向的值
- 參數必須是指向的指針signed int
p 寫入定義指針的實現定義的字符序列

示例:C++ sprintf()

#include <cstdio>
#include <iostream>
using namespace std;

int main() {
  char buffer[100];
  int count;
  char name[] = "Max";
  int age = 23;

  // write combination of strings and variables to buffer variable
  // store the number of characters written in count
  count = sprintf(buffer, "Hi, I am %s and I am %d years old", name, age);

  // print the string buffer
  cout << buffer << endl;

  // print the number of characters written
  cout << "Number of characters written = " << count;

  return 0;
}

輸出

Hi, I am Max and I am 23 years old
Number of characters written = 34

相關用法


注:本文由純淨天空篩選整理自 C++ sprintf()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。