小甲鱼 发表于 2016-2-11 18:54:57

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)所有,转载请注明来源!

SkyBurner 发表于 2016-4-21 10:15:06

@小甲鱼 小甲鱼老师:为什么buffer的长度是28?{:10_269:}

wuwenhuan1989 发表于 2016-7-17 16:18:08

我这里的运行结果是25,sprintf与printf的区别是:sprintf指定了格式化输出结果存储的地址。

mhp0114 发表于 2017-2-14 21:49:38

get it

weiy、 发表于 2017-12-29 15:51:14

SkyBurner 发表于 2016-4-21 10:15
@小甲鱼 小甲鱼老师:为什么buffer的长度是28?

由于在linux中中文字符占用3个字节,上面的:也是是中文字符注意不要忘了占位符也算一字节

还差几 发表于 2018-3-11 12:03:27

{:10_257:}

cookies945 发表于 2019-1-9 20:55:04

weiy、 发表于 2017-12-29 15:51
由于在linux中中文字符占用3个字节,上面的:也是是中文字符注意不要忘了占位符也算一字节

啥是占位符?大佬

{:5_94:}

weiy、 发表于 2019-3-15 22:22:23

cookies945 发表于 2019-1-9 20:55
啥是占位符?大佬

就是 %s %d %f

小南777 发表于 2019-3-18 21:07:58

{:10_245:}{:10_245:}{:10_245:}

JackII 发表于 2019-10-8 10:32:29

weiy、 发表于 2019-3-15 22:22
就是 %s %d %f

多个占位符也只算一个字节吗?

编程爱好者kguj 发表于 2020-7-4 22:22:12

s+printf?还有这样的函数!才知道。{:10_257:}

317323226 发表于 2020-7-12 13:20:24

sprint 和print的区别是什么啊

qiu064987 发表于 2020-12-19 19:13:51

呵呵

Anderson_Cooper 发表于 2021-3-16 10:29:50

{:10_257:}{:10_245:}{:10_245:}{:10_245:}

lipu 发表于 2021-11-19 11:49:03

请问为什么我将演示中的buffer改为 char *buffer 运行结果为空,sprintf函数的第一个参数需要的不就是一个字符指针作为地址吗?

么么么我爱你 发表于 2022-6-21 14:13:27

{:10_256:}

18741300715 发表于 2024-1-24 21:20:54

没太明白          n长度是28知道   统计的是sprintf“打印出的字”的数量      
可是最后   printf里面   %s ...   ,buffer...         这里真没看明白去掉了    就会打印错误    这个的存在的原理是什么啊   迷糊了。
页: [1]
查看完整版本: sprintf -- 写入格式化数据到字符串