1、
sprintf 跟printf 在用法上幾乎一樣,只是列印的目的地不同而已,前者列印到字串中,後者則直接在命令列上輸出。這也導致sprintf 比printf 有用得多。
sprintf 是個變參函數,定義如下:
int sprintf( char *buffer, const char *format [, argument] ... );
除了前兩個參數類型固定外,後面可以接任意多個參數。而它的精華,顯然就在第二個參數:格式化字串上。
格式化數字字串
sprintf 最常見的應用之一莫過於把整數列印到字串中,所以,spritnf 在大多數場合可以替代itoa。
如:把整數123 列印成一個字串儲存在s 中。
sprintf(s, "%d", 123); //產生"123"
可以指定寬度,不足的左邊補空格:
sprintf(s, "%8d%8d", 123, 4567); //產生:" 123 4567"
當然也可以靠左對齊:
sprintf(s, "%-8d%8d", 123, 4567); //產生:"123 4567"
sprintf 的傳回值
較少有人注意printf/sprintf 函數的傳回值,但有時它卻是有用的,spritnf 返回了本次函數調用
最終列印到字元緩衝區中的字元數目。也就是說每當一次sprinf 調用結束以後,你無須再調用一次
strlen 便已經知道了結果字串的長度。如:
int len = sprintf(s, "%d", i);
對於正整數來說,len 便等於整數i 的10 進位位元。
eg.len=sprintf(page,"%s='%s'/n",fb_data->name,fb_data->value);
2、
sscanf()函數的用法int sscanf( const char *buffer, const char *format [, argument ] ... )
其實sscanf函數和scanf函數很像,只不過是scanf是從控制台下使用者自己輸入的,而sscanf是從buffer中讀取資料,而不用使用者輸入了(相當於使用者輸入的字串是buffer).後面的argument是要儲存的位置。在匹配的過程中,只要遇到不匹配的情況,sscanf就結束運行。
sscanf函數傳回值的含義是有多少個變數被賦值。
#include <iostream><br />#include <string><br />using namespace std;<br />const int maxn = 3000;<br />int f[maxn];<br />int main() {<br />char *p = "1234";<br />char s[10];<br />int a, b;<br />sscanf(p, "%s", s);<br />printf("%s/n", s);<br />sscanf(p, "%3d%1d", &a, &b);<br />printf("%d %d/n", a , b);<br /> return 0;<br />}<br />