天天看點

sprintf函數的用法總結

1、該函數包含在stdio.h的頭檔案中。

     #include <stdio.h>

2、sprintf與printf函數的差別

  • sprintf和平時我們常用的printf函數的功能很相似。
  • sprintf函數列印到字元串中,而printf函數列印輸出到螢幕上。
  • sprintf函數和printf函數在我們完成其他資料類型轉換成字元串類型的操作中應用廣泛。

3、sprintf函數的格式:

int sprintf( char *buffer, const char *format, [ argument] … );

除了前兩個參數固定外,可選參數可以是任意個。buffer是字元數組名;format是格式化字元串(像:"=%6.2f%#x%o",%與#合用時,自動在十六進制數前面加上0x)。隻要在printf中可以使用的格式化字元串,在sprintf都可以使用。其中的格式化字元串是此函數的精華。

4、可以控制精度       char str[20];      double f=14.309948;

     sprintf(str,"%6.2f",f);      printf("%s\n",str);      

sprintf函數的用法總結

14.31前面有一個空格,因為位寬為6,而14.31隻占了5位,預設在最左邊用空格補位 如果位寬小于實際位寬,沒有任何作用,為預設位寬。                                 

5、可以将多個數值資料連接配接起來。     char str[20];

    int a=20984,b=48090;

    sprintf(str,"%d %d",a,b);

    printf("%s\n",str);   

sprintf函數的用法總結

6、可以将多個字元串連接配接成字元串     char str[20];

    char s1[3]= {'A','B','C'};

    char s2[3]= {'T','Y','X'};

    sprintf(str,"%.3s%.3s",s1,s2);

    printf("%s\n",str);     

sprintf函數的用法總結

%m.n在字元串的輸出中,m表示寬度,字元串共占的列數;n表示實際的字元數。%m.n在浮點數中,m也表示寬度;n表示小數的位數。

7、可以動态指定,需要截取的字元數

    char str[20],s[20];

    char s1[3]= {'A','B','C'};

    char s2[3]= {'T','Y','X'};

    sprintf(str,"%.*s%.*s",2,s1,3,s2);

    sprintf(s, "%*.*f", 10, 2, 3.1415926);

    printf("%s\n",str);

    printf("%s\n",s);    

sprintf函數的用法總結

    *代表你想要控制的參數

8、可以列印出i的位址     int i=0;char s[20];

    sprintf(s,"%p",&i);

    printf("%s\n",s);     

sprintf函數的用法總結

上面的語句相當于

    int i=0;char s[20];

    sprintf(s, "%0*X", 2 * sizeof(void *), &i);

    printf("%s\n",s);     

sprintf函數的用法總結

9、sprintf的傳回值是字元數組中字元的個數,即字元串的長度,不用在調用strlen(s)求字元串的長度。        char s[20];int i=123456789;

       int len=sprintf(s,"%d",i);

       printf("%s\n",s);

       printf("%d\n",len);        

sprintf函數的用法總結

繼續閱讀