C++中如何调用sprintf方法

C++中如何调用sprintf方法,第1张

//头文件

#include <stdioh>

int main(void)

{

int a, b;

char buffer[100];

a = 100;

b = 200;

//和在c里使用没什么区别

sprintf(buffer, "%d", a + b);

printf("%s", buffer);

}

sprintf函数的作用是格式化一个字符串,和printf函数有些类似,不同的是printf函数是格式化输出流,而sprintf是格式化字符串。sprintf函数的第一个参数就是指向一个用于存放结果的字符串,第二个参数就和printf函数一样,由普通字符串和格式转换控制符组成。转换控制符就是:%d对应整型、%c对应一个字符、%f对应一个单精度浮点数、%s对应一个字符串。sprintf会把按照第二个参数格式化好的字符串放到第一个参数中,所以第一个参数要有足够的长度容纳。

sprintf()是字符串格式化函数,主要功能是把格式化的数据写入某个字符串中。sprintf 是个变参函数。

头文件:stdioh

原型:int sprintf( char buffer, const char format, [ argument] … );

参数:

buffer:char型指针,指向将要写入的字符串的缓冲区。

format:格式化字符串。

[argument]:可选参数,可以是任何类型的数据。

返回值:字符串长度(strlen)

例子:

#include<stdioh>

int main()/主函数“整数”类型/

{

 char buffer[50];/“字符”类型的数组,下面共有50个元素。/

 int n,a=5,b=3;/三个变量都为“整数”类型,intn中间要有空格/

  n=sprintf(buffer,"%d plus %d is %d",a,b,a+b);/赋予数值/

  printf("[%s]is a string %d chars long\n",buffer,n);/“格式输出函数”/

  return 0;

  }

%3d :就是输出时右对齐,如果数字长度小于3,则左边用空格填充

%6d :就是输出时右对齐,如果数字长度小于6,则左边用空格填充

int a=20984,b=48090;

sprintf(str,"%3d%6d",a,b);

由于a的长度为5,所以不用空格了,而b的长度为5,但设定的对齐长度为6,所以左为用空格填充一位

故输出:20984 48090

不要这样做,这是未定义的行为。

参考资料:

网页链接

C 标准及POSIX 指定 sprintf 及其变体的行为在参数与目标缓冲区重叠时未定义。示例:

sprintf(dst, "%s and %s", dst, t); // <- 有错:未定义行为

没有明白你的本意是什么,做了一个,你看看吧,不对接着追问

#include "stdioh"

#include "stdlibh"

#include "timeh"

int main()

{

int a;

srand((unsigned)time( NULL ));

a=rand()%1000;

printf("随机数%0d\n",a);

}

通常是用来按照一定的格式,给字符窜赋值的,

像char buf[100] = {0};

char s1[10] = "hello world";

char s2[10] = "Tom";

sprintf(buf,"zifuchuan is %s,he int %s",,s1,s2);

printf("buf = [%s]",buf);//输出是,也就是buf变成"zifuchuan is helloworld ,he int Tom"

同样适合一些 int 类型,

int int1= 10

像sprintf(buf,"%s,%s,%d",s1,s2,int1);

这样得出的字符串是"hellowolrd Tom 10"

这样可以么?

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/12182487.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存