C語言printf

1.調用格式爲  printf("<格式化字符串>", <參量表>);函數

  其中格式化字符串包括兩部份內容: 一部分是正常字符, 這些字符將按原樣輸出; 另外一部分是格式化規定字符, 以"%"開始, 後跟一個或幾個規定字符, 用來肯定輸出內容格式。參量表是須要輸出的一系列參數, 其個數必須與格式化字符串所說明的輸出參數個數同樣多, 各參數之間用","分開, 且順序一一對應, 不然將會出現意想不到的錯誤。spa

2.格式化字符3d

說明
%d 十進制有符號整數
%u 十進制無符號整數
%f  浮點數
%s  字符串
%c 單個字符
%p 指針的值
%e 指數形式的浮點數
%x, %X 無符號以十六進制表示的整數
%0 無符號以八進制表示的整數
 %g 自動選擇合適的表示法


  
說明:
(1). 能夠在"%"和字母之間插進數字表示最大場寬。 指針

例如: code

%3d 表示輸出3位整型數, 不夠3位右對齊。 blog

%9.2f 表示輸出場寬爲9的浮點數, 其中小數位爲2, 整數位爲6, 小數點佔一位, 不夠9位右對齊。作用域

%8s 表示輸出8個字符的字符串, 不夠8個字符右對齊。 若是字符串的長度、或整型數位數超過說明的場寬, 將按其實際長度輸出。 但對浮點數, 若整數部分位數超過了說明的整數位寬度, 將按實際整數位輸出; 若小數部分位數超過了說明的小數位寬度, 則按說明的寬度以四捨五入輸出。另外, 若想在輸出值前加一些0, 就應在場寬項前加個0。 例如: %04d 表示在輸出一個小於4位的數值時, 將在前面補0使其總寬度爲4位。若是用浮點數表示字符或整型量的輸出格式, 小數點後的數字表明最大寬度, 小數點前的數字表明最小寬度。 例如: %6.9s 表示顯示一個長度不小於6且不大於9的字符串。若大於9, 則第9個字符之後的內容將被刪除。
(2). 能夠在"%"和字母之間加小寫字母l, 表示輸出的是長型數。例如: %ld 表示輸出long整數, %lf 表示輸出double浮點數。
(3). 能夠控制輸出左對齊或右對齊, 即在"%"和字母之間加入一個"-" 號可說明輸出爲左對齊, 不然爲右對齊。例如: %-7d 表示輸出7位整數左對齊,%-10s 表示輸出10個字符左對齊。字符串

 

3. 一些特殊規定字符
\n換行
\f清屏並換頁
\r回車
\t Tab符
\xhh表示一個ASCII碼用16進表示,
其中hh是1到2個16進制數
原型

int a=1234;
    printf("a=%d\n",a);    //a=1234
    printf("a=%2d\n",a);   //a=1234    超過2位,按實際輸出
    printf("a=%6d\n",a);   //a=  1234  不足6位,右對齊
    printf("a=%06d\n",a);  //a=001234  不足6位,前面補0
    printf("a=%-6d\n",a);  //a=1234    '-'左對齊
    

    int* i=&a;
    printf("i=%p\n",i);    //i=0012FF44  輸出指針的值,即地址

    float m=8888.8888;     //float 單精度型浮點數 有效位數是6位或7位,根據不一樣的浮點數會有不一樣
    float m1=8888.8888f;    //在後面加上f或F,編譯警告:truncation from'const double'to 'float'
                            //編譯器默認浮點數爲double
    float m2=8888.888f;  
    double n=8888.8888;
    double n1=8888888888.88888888;  //double 雙精度型浮點數 有效位數是15位
    printf("m=%f\n m1=%f\n m2=%f\n n=%lf\n n1=%f\n",m,m1,m2,n,n1); // m=8888.888672
                                                                //  m1=8888.888672     
                                                                //  m2=8888.887695
                                                               // n=8888.888800
                                                               // n1=8888888888.888889
                                                               //%f的默認輸出小數位數就是6位無論有沒有l
    /*printf的%f說明符的確既能夠輸出float型又能夠輸出 double型。 根據"默認參數提高"規則(在printf這樣的函數的
    可變參數列表中 ,不論做用域內有沒有原型,都適用這一規則)float型會被提高爲double型。所以printf()只會看到
    雙精度數。嚴格地講,%lf在printf下是未定義的,可是不少系統可能會接受它。要確保可移植性,就要堅持使用%f。*/

    printf("m4=%4.2f\n",m);   //寬度總共4位,小數兩位,小數點一位,整數一位,這裏整數超過寬度規定,按實際整數位輸出
    printf("m5=%9.6f\n",m);   //浮點數小數部分不足6位,右對齊
    printf("m6=%9.2f\n",m);   //整數部分不足6位,右對齊;小數部分超過2位,四捨五入

    char c[20]="Hello,world!";
    printf("c=%s\n",c);    
    printf("c=%6.9s\n",c);  //c=Hello,wor  6.9s表示輸出一個長度長度不小於6且不大於9的字符串。若大於9, 則第9個字符之後的內容將被刪除。
相關文章
相關標籤/搜索