7. printf寬度控制和精度控制


一般形式:

printf("格式控制字符串",輸出列表);

格式控制字符串形式:

[標志][輸出最小寬度][.精度][長度][類型]

特殊符號使用:*

printf格式字符串中,與寬度控制和精度控制有關的常量都可以換成變量,方法就是使用一個*代替那個常量,然后在后面提供變量給*

類型

d  以十進制形式輸出帶符號整數(正數不輸出符號) 
o  以八進制形式輸出無符號整數(不輸出前綴 0) 
x,X  以十六進制形式輸出無符號整數(不輸出前綴 Ox) 
u  以十進制形式輸出無符號整數 
f  以小數形式輸出單、雙精度實數 
e,E  以指數形式輸出單、雙精度實數 
g,G  以%f 或%e 中較短的輸出寬度輸出單、雙精度實數 
c  輸出單個字符 
s  輸出字符串 

標志

-  結果左對齊,右邊填空格 
-  輸出符號(正號或負號) 
空格  輸出值為正時冠以空格,為負時冠以負號 
#  對 c,s,d,u類無影響;
對 o 類,在輸出時加前綴 o;對 x 類,在輸出時加前綴 0x;
對 e,g,f 類當結果有小數時才給出小數點

輸出位寬

用十進制整數來表示輸出的最少位數。
若實際位數多於定義的寬度,則按實際位數輸出,
若實際位數少於定義的寬度則補以空格或 0。

精度

精度格式符以“.”開頭,后跟十進制整數。本項的意義是:
如果輸出數字,則表示小數的位數;
如果輸出的是字符,則表示輸出字符的個數;
若實際位數大於所定義的精度數,則截去超過的部分。 

長度

長度格式符為 h,l 兩種,
h 表示按短整型量輸出,l 表示按長整型量輸出。

實例

#include <stdio.h>


int main(void) {
    char s[] = "abcdefg";
    int i = 12345;
    double d = 123.45678;


    printf("%s\n", s);
    printf("%.*s\n", 3, s);
    printf("%#.8x\n", s);
    printf("%#p\n\n", s);


    printf("%d\n", i);
    printf("%*d\n", 10, i);
    printf("%0*d\n\n", 10, i);


    printf("%f\n", d);
    printf("%.*f\n", 3, d);
    printf("%20.10f\n", d);
    printf("%*.*f\n\n", 20, 10, d);


    return 0;
}

輸出結果

abcdefg
abc
0x456de280
0x7ffc456de280


12345
     12345
0000012345


123.456780
123.457
      123.4567800000
      123.4567800000


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM