版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_42167759/article/details/83659674
描述
C 库函数 int sprintf(char *str, const char *format, ...) 发送格式化输出到 str 所指向的字符串。
参数
- str -- 这是指向一个字符数组的指针,该数组存储了 C 字符串。
- format -- 这是字符串,包含了要被写入到字符串 str 的文本。它可以包含嵌入的 format 标签,format 标签可被随后的附加参数中指定的值替换,并按需求进行格式化。format 标签属性是 %[flags][width][.precision][length]specifier。
返回值
如果成功,则返回写入的字符总数,不包括字符串追加在字符串末尾的空字符。如果失败,则返回一个负数。
问题描述: 向同一个变量中赋值会覆盖之前的值
代码部分:
#include <stdio.h>
#include <math.h>
int main()
{
char str[80];
sprintf(str, "value Pi = %f", M_PI);
puts(str);
sprintf(str, "Pi 的值 = %f", M_PI);
puts(str);
return(0);
}
结果显示:
value Pi = 3.141593
Pi 的值 = 3.141593
问题描述(仅用sprintf函数):
把char s[]="computer";char c='1'; int i = 35;float fp = 1.7326536f; 不同类型的数据拼接成一个字符串;
代码部分:
#include<stdio.h>
int main(void)
{
char buffer[200];
char s[]="computer";
char c='1';
int i = 35;
int j=0;
float fp = 1.7326536f;
//格式化并打印各种数据到buffer中
j = sprintf( buffer, "string:%s\n",s);
j += sprintf( buffer + j, " character:%c\n",c);
j += sprintf( buffer + j, " integer:%d\n",i);
j += sprintf( buffer + j, " real:%f\n",fp);
printf("Output:\n%s\ncharacter count=%d\n",buffer,j);
return 0;
}
结果显示:
Output:
string:computer
character:1
integer:35
real:1.732654
character count=56
把char s[]="computer";char c='1'; int i = 35;float fp = 1.7326536f; 不同类型的数据拼接成一个字符串;
代码部分:
#include<stdio.h>
#include <string.h>
int main()
{
char buffer[200];
char s[]="computer";
float fp = 1.7326536f;
char temp[1024] = {0};
char temp_other[1024] = {0};
sprintf(temp, "string:%s\n", s);
sprintf(temp_other, "real:%f\n", fp);
strcat(temp,temp_other);
printf("Output:\n%s\n", temp);
return 0;
}
结果显示:
Output:
string:computer
real:1.732654