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 |
写入字符串 |
d 或 i |
将有符号整数转换为十进制表示 |
o |
将无符号整数转换为八进制表示 |
X 或 x |
将无符号整数转换为十六进制表示 |
u |
将无符号整数转换为十进制表示 |
F 或 f |
将浮点数转换为十进制表示 |
E 或 e |
将浮点数转换为十进制指数表示法 |
A 或 a |
将浮点数转换为十六进制指数 |
G 或 g |
将浮点数转换为十进制或十进制指数表示法 |
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
另请阅读