//头文件
#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"
这样可以么?
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)