1. 程式人生 > >函式 —— sprintf() 拼接字串

函式 —— sprintf() 拼接字串

描述

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