2017年7月5日 星期三

使用 sprintf 將字串組合

格式


int sprintf (char * str, const chat * format, ...);

sprintf 格式的組成和 printf 的使用一樣,不一樣的是可以將 C 的字串組合後,藉由指向 char 的 pointer str 存入 buffer 內容中。

要注意這裡使用的 buffer 應該要夠大,才能夠放進組合後整個字串的大小。


str:指向 buffer 的 pointer,用來儲存字串。大小應該要足夠存放運算結果的字串。

format:與 printf 的格式相同, %d, %x, %s, ...

Return Value:函數前面的型態是 int,代表回傳值會是一個 int ,如果函數執行成功,會回傳寫進的字元的總數


---------------------
#include <stdio.h>

char buffer[20];  // the number of result that both added cant larger than 20 bytes
char string[] = "TEXT";
int number = 1234;


main()
{
  sprintf( buffer, "%s, + %d \n" , string, number);
  printf("print result : %s \n",buffer);

  return 0;
}



--------------------

另外看 printf 的格式有哪些


#include <stdio.h> 

 int main() 
{
  printf ("Characters: %c %c \n", 'a', 65); 
  printf ("Decimals: %d %ld\n", 1977, 650000L);  
  printf ("Preceding with blanks: %10d \n", 1977); 
  printf ("Preceding with zeros: %010d \n", 1977); 
  printf ("Some different radixes: %d %x %o %#x %#o \n", 100, 100, 100, 100, 100); 
  printf ("floats: %4.2f %+.0e %E \n", 3.1416, 3.1416, 3.1416); 
  printf ("Width trick: %*d \n", 5, 10); 
  printf ("%s \n", "A string"); return 0; 
}
D:\cp\code>gcc printf.c -o printf 

D:\cp\code>printf 
Characters: a A 
Decimals: 1977 650000 
Preceding with blanks:            1977 
Preceding with zeros: 0000001977 
Some different radixes: 100 64 144 0x64 0144 
floats: 3.14 +3e+000 3.141600E+000 
Width trick: 10 A string
符號說明範例
c字元 (char)a
d整數 (Decimal integer)372
i整數 (Decimal integer) (同 d)372
f浮點數 (Floating Point)372.56
e科學記號 (Scientific notation)3.7256e+2
E科學記號 (Scientific notation)3.7256E+2
g取浮點數或科學記號當中短的那個372.56
G取浮點數或科學記號當中短的那個372.56
o八進位 (Octal Integer)735
s字串 (String)372
u無號數 (unsigned integer)372
x十六進位 (Hexadecimal integer)3fb
X十六進位 (Hexadecimal integer)3FB
p指標位址B800:0000
n不列印, 用來取得目前輸出長度%n
%印出 % 符號%%


參考


http://programmermagazine.github.io/201401/htm/article2.html







沒有留言:

張貼留言