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() 的语法是

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

这里,

  • buffer 是我们需要写入的字符串缓冲区
  • format 是要写入字符串缓冲区的字符串
  • 上面代码中的 ... 表示您可以向 sprintf() 传递多个参数。

sprintf() 参数

sprintf() 函数接受以下参数

  • buffer - 指向用于写入结果的字符串缓冲区的指针
  • format - 指向要写入字符串缓冲区的以 null 结尾的字符串(C 字符串)。它包含字符以及以 % 开头的可选格式说明符。
  • ... - 指定要打印数据的其他附加参数。它们按照格式说明符的顺序出现。

sprintf() 返回值

sprintf() 函数返回

  • 成功时 - 对于足够大的缓冲区,返回写入的字符数(不包括终止的 null 字符 '\0'
  • 失败时 - 返回一个负值

sprintf() 声明

sprintf() 函数在 cstdio 头文件中的声明是

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

格式说明符

printf()format 参数可以包含以 % 开头的格式说明符。这些说明符被后面变量的值替换。

格式说明符具有以下部分

  • 前导 % 符号
  • flags - 一个或多个标志,用于修改转换行为(可选)
    • -:在字段内左对齐结果。默认情况下是右对齐。
    • +:结果的符号附在该值的前面,即使对于正结果也是如此。
    • space:如果没有符号,则在结果前面附加一个空格。
    • #:执行转换的替代形式。
    • 0:用于整数和浮点数。用前导零填充数字而不是空格。
  • width - 一个可选的 * 或整数值,用于指定最小字段宽度。
  • precision - 一个可选字段,由 . 后跟 * 或整数或什么都没有组成,用于指定精度。
  • length - 一个可选长度修饰符,用于指定参数的大小。
  • specifier - 一个转换格式说明符。

sprintf() 格式说明符声明

sprintf() 的格式说明符的通用声明是

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

常用的格式说明符

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

格式说明符 描述
% %% 后面跟着另一个 % 字符会在屏幕上打印 %
c 写入单个字符
s 写入字符串
di 有符号整数转换为十进制表示
o 将无符号整数转换为八进制表示
Xx 将无符号整数转换为十六进制表示
u 将无符号整数转换为十进制表示
Ff 将浮点数转换为十进制表示
Ee 将浮点数转换为十进制指数表示法
Aa 将浮点数转换为十六进制指数
Gg 将浮点数转换为十进制或十进制指数表示法
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

另请阅读

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战