sprintf/sscanf 用法

來源:互聯網
上載者:User

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 /> 



 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.