函式 —— sprintf() 拼接字串
阿新 • • 發佈:2018-12-19
描述
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