函数 —— sprintf() 拼接字符串

版权声明:本文为博主原创文章,未经博主允许不得转载。 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


  问题描述(用sprintf函数,和strcat函数):

把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

参考连接:    函数 —— popen() fscanf() sprintf() 执行shell命令并获取结果

猜你喜欢

转载自blog.csdn.net/weixin_42167759/article/details/83659674