C語言學習:printf的用法(進階)

在C語言中,有三個函數可以用來在顯示器上輸出數據,它們分別是:

  • puts():只能輸出字符串,並且輸出結束後會自動換行。

  • putchar():只能輸出單個字符。

  • printf():可以輸出各種類型的數據。

C語言學習:printf的用法(進階)

printf() 是最靈活、最複雜、最常用的輸出函數,完全可以替代 puts() 和 putchar(),大家一定要掌握。

舉例:

#include

int main()

{

printf("這是我的博客:\n");

printf("www.yuanshijie.top\n");

return 0;

}

運行結果:

C語言學習:printf的用法(進階)

printf() 格式控制符的完整形式如下:

%[flag][width][.precision]type

[ ] 表示此處的內容可有可無,是可以省略的。

1) type 表示輸出類型,比如 %d、%f、%c、%lf,type 就分別對應 d、f、c、lf;

type 這一項必須有,這意味著輸出時必須要知道是什麼類型。

2) width 表示最小輸出寬度,也就是至少佔用幾個字符的位置;

首先彙總一下用到的格式控制符:

%c輸出一個單一的字符

%hd、%d、%ld以十進制、有符號的形式輸出 short、int、long 類型的整數

%hu、%u、%lu以十進制、無符號的形式輸出 short、int、long 類型的整數

%ho、%o、%lo以八進制、不帶前綴、無符號的形式輸出 short、int、long 類型的整數

%hx、%x、%lx

%hX、%X、%lX以十六進制、不帶前綴、無符號的形式輸出 short、int、long 類型的整數。如果 x 小寫,那麼輸出的十六進制數字也小寫;如果 X 大寫,那麼輸出的十六進制數字也大寫。

%f、%lf以十進制的形式輸出 float、double 類型的小數

%e、%le

%E、%lE以指數的形式輸出 float、double 類型的小數。如果 e 小寫,那麼輸出結果中的 e 也小寫;如果 E 大寫,那麼輸出結果中的 E 也大寫。

%g、%lg

%G、%lG以十進制和指數中較短的形式輸出 float、double 類型的小數,並且小數部分的最後不會添加多餘的 0。如果 g 小寫,那麼當以指數形式輸出時 e 也小寫;如果 G 大寫,那麼當以指數形式輸出時 E 也大寫。

%s輸出一個字符串

printf()的高級用法

#include

int main()

{

int a1=20, a2=345, a3=700, a4=22;

int b1=56720, b2=9999, b3=20098, b4=2;

int c1=233, c2=205, c3=1, c4=6666;

int d1=34, d2=0, d3=23, d4=23006783;

printf("%-9d %-9d %-9d %-9d\n", a1, a2, a3, a4);

printf("%-9d %-9d %-9d %-9d\n", b1, b2, b3, b4);

printf("%-9d %-9d %-9d %-9d\n", c1, c2, c3, c4);

printf("%-9d %-9d %-9d %-9d\n", d1, d2, d3, d4);

return 0;

}

運行結果:

C語言學習:printf的用法(進階)

這樣寫起來更加方便,即使改變某個數字,也無需修改 printf() 語句,增加或者減少空格數目。

%-9d中,d表示以十進制輸出,9表示最少佔9個字符的寬度,寬度不足以空格補齊,-表示左對齊。綜合起來,%-9d表示以十進制輸出,左對齊,寬度最小為9個字符。大家可以親自試試%9d的輸出效果。

想讓你的printf()函數更有趣,我們可以調用一個有意思的小函數Sleep()。

格式:Sleep();//其中S要大寫,在括號內,寫的是間隔的時間,單位是毫秒,一秒等於一千毫秒。

#include

#include

int main()

{

printf("Hello\n");

Sleep(5000);

printf("World\n");

return 0;

}

這段代碼會讓你的電腦顯示Hello World。中間加了Sleep之後,

先打印Hello,五秒之後,再打印World。這樣是不是有趣多了。

printf()是學習C語言最常用的格式輸出函數,是非常有趣的,需要慢慢的研究才能發現他的奧妙。


分享到:


相關文章: