sprintf -- 写入格式化数据到字符串
sprintf 函数文档函数概要:
与 printf 函数类似,不过 sprintf 函数是将格式化数据写入到字符串中。
缓冲区的尺寸必须足够大,以至于可以包含整个转换后的结果。(snprintf 函数是更安全的版本)
format 参数后边的额外参数数量由 format 决定,具体用法请参考 printf 函数中格式化占位符的解释。
函数原型:
#include <stdio.h>
...
int sprintf(char *str, const char *format, ...);
参数解析:
参数含义
str 指向存放结果字符串的缓冲区
format 格式化字符串
... 可选参数,具体请参考 printf 函数文档
返回值:
如果函数调用成功,返回值是实际写入的字符数(不包含表示字符串结束的 '\0');
如果函数调用失败,返回值是一个负数。
演示:
#include <stdio.h>
int main()
{
char buffer;
int n;
n = sprintf(buffer, "%d 加上 %d 的结果是:%d\n", 3, 5, 3 + 5);
printf("%s长度是:%d\n", buffer, n);
return 0;
}
版权归鱼C工作室(www.fishc.com)所有,转载请注明来源!
@小甲鱼 小甲鱼老师:为什么buffer的长度是28?{:10_269:} 我这里的运行结果是25,sprintf与printf的区别是:sprintf指定了格式化输出结果存储的地址。 get it SkyBurner 发表于 2016-4-21 10:15
@小甲鱼 小甲鱼老师:为什么buffer的长度是28?
由于在linux中中文字符占用3个字节,上面的:也是是中文字符注意不要忘了占位符也算一字节 {:10_257:} weiy、 发表于 2017-12-29 15:51
由于在linux中中文字符占用3个字节,上面的:也是是中文字符注意不要忘了占位符也算一字节
啥是占位符?大佬
{:5_94:} cookies945 发表于 2019-1-9 20:55
啥是占位符?大佬
就是 %s %d %f {:10_245:}{:10_245:}{:10_245:} weiy、 发表于 2019-3-15 22:22
就是 %s %d %f
多个占位符也只算一个字节吗? s+printf?还有这样的函数!才知道。{:10_257:}
sprint 和print的区别是什么啊 呵呵 {:10_257:}{:10_245:}{:10_245:}{:10_245:} 请问为什么我将演示中的buffer改为 char *buffer 运行结果为空,sprintf函数的第一个参数需要的不就是一个字符指针作为地址吗? {:10_256:} 没太明白 n长度是28知道 统计的是sprintf“打印出的字”的数量
可是最后 printf里面 %s ... ,buffer... 这里真没看明白去掉了 就会打印错误 这个的存在的原理是什么啊 迷糊了。 经过中文测试,返回值是被写入转换结果的大小(字节)
页:
[1]