C語言之數據輸出printf( )和putchar( )

格式化輸出函數printf( )

printf( )功能:

向系統指定輸出設備按指定的格式輸入任意個任意類型的數據,並返回實際輸出的字符數。若出錯,將返回負數。

printf( )使用形式:

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

格式字符(以"%"引導):

(1)d格式字符:用來輸出十進制整數。

  • %d,按整型數據的實際長度輸出。
  • %md,m爲指定的輸出字段的寬度。若實際位數小於m,則左端補空格;若實際位數大於m,則按實際位數輸出。
  • %ld,輸出長整型數據。

(2)o格式字符("%#o"):以八進制形式輸出整數。
(3)x格式字符("%#x"):以十六進制形式輸出整數。
(4)u格式字符:用來輸出unsigned型數據,即無符號數,以十進制輸出。
(5)c格式字符:用來輸出一個字符。
(6)s格式字符:用來輸出一個字符串。
(7)f格式字符:用來輸出實數(包括單雙精度),以小數形式輸出。

  • %f,整數部分全輸出並輸出6位小數。

(8)e格式字符:以指數形式輸出實數。
(9)g格式字符:用來輸出實數,它根據數值的大小,自動選擇f格式或e格式(選擇輸出時佔寬度較小的一種),且不輸出無意義的零。

格式字符串:

%[flag][width][.prec][F|N|h|L]Type

(1)標誌flag:

  • "+":對於正數符號位輸出爲正號"+",對於負數輸出"-"。
  • 空格(" "):對於正數符號位輸出空格,對於負數輸出"-"。
  • "-":輸出時左對齊,右側補空格。
  • "#":加在代表輸出八進制的類型字符"o"前表示八進制。

(2)輸出寬度width:用十進制整數來表示輸出的最少位數。若實際數據的位數多於指定寬度,則按實際位數輸出;若少於指定寬度,則補以空格或"0";
(3)精度prec:精度格式符以"."開頭,後跟一個十進制整數。
意義:如果輸出數字,則表示數字的小數位數;如果輸出的時字符,則表示輸出字符的個數;若實際位數大於所定義的精度,則超出部分被截去。
(4)長度:F|n|h|l 表示指針是否是遠指針,或整數是否是長整數。

  • F:表示遠指針。
  • n:表示近指針。
  • h:短整型或單精度浮點數。
  • l:長整型或雙精度浮點數。

(5)類型Type:
類型指示符:

格式字符 說明
d,i 以帶符號的十進制形式輸出整數
o 以八進制形式輸出整數
u 以無符號的十進制形式輸出整數
x或X 以十六進制形式輸出整數
c 輸出單個字符
s 輸出字符串
f 以小數形式輸出實數
e或E 以指數形式輸出實數
g或G 自動選擇"%f"和"%e"中寬度最小的形式輸出實數

(6)具體的格式字符串示例:

  • %m.nf:輸出的實數共佔m個字符,其中小數有n個。若實際數值位數不足m個,左端補空格;若實際數值位數超出規定的寬度,則整數部分按實際輸出,小數部分四捨五入爲n位。
  • %e:標準寬度佔13位,其中,尾數部分爲:整數部分佔1位,小數點佔1位,小數佔6位,e佔1位;指數部分爲:正負號佔1位,指數佔3位。
  • %m.ne:整個數寬度至少佔m位,n爲尾數部分的小數部分,不足的在左端補空格,多出的按實際位數輸出。
  • %ms:輸出一個字符串,寬度佔m位。若長度小於m,則右對齊,左側補空格;若長度大於m,則原樣輸出,不進行截取。
  • %-ms:與%ms類似,但長度小於m時,字符串左對齊,右側補空格。
  • %m.ns:整個輸出項佔m列,但只取字符串中左側n個字符輸出。輸出時右對齊,左端補空格。當m<n時,所佔寬度m忽略不計,輸出字符串的前n個字符。
  • %-m.ns:含義與%m.ns相似,將n個字符輸出在m列範圍內,左對齊,右側補空格。

(7)注意點:

  • 任意一個整型數據也可以以字符形式輸出,輸出時,如果整形數據超過255的,先對256做取餘操作後再輸出。
  • ”格式字符串“中的格式類型指示符的類型及個數,必須與”輸出項列表“中的輸出項的數據類型、個數一致,否則會引起輸出錯誤。
  • 如果格式類型指示符的個數小於輸出項的個數,多餘的輸出項不予輸出;如果格式說明的個數多於輸出項的個數,多餘的格式項輸出不定值或"0"。

    單個字符的輸出函數putchar( )

    putchar( )功能:

    向標準輸出設備(顯示器)輸出一個字符,並返回輸出字符的ASCII值。

    putchar( )使用形式:

    putchar(ch);
    其中"ch"可以是整型或字符型的常量、變量或表達式,也可以是一個轉義字符。輸出時,先計算括號內的值,然後根據ASCII碼輸出相應的字符。

    putchar( )函數只能用於單個字符的輸出,且一次只能輸出一個字符。

    常用字母對應的ASCII碼值:

    A~Z 65~90
    a~z 97~122

    實例效果:

        printf("%d\n",234);
            printf("%3d\n",23144);
            printf("%3d\n",21);
            printf("%#o\n",23);
            printf("%#x\n",17);
            printf("%c\n",68);
            char a[10] = "abcdef";
            printf("%s\n",a);
            printf("%f\n",10.1);
            printf("%g\n",23.2424);
            printf("%5.2f\n",0.123);
            printf("%5.2f\n",0.1234567);
            printf("%e\n",1331.1341123);
            printf("%8.3e\n",1331.1341123);
            printf("%8.3e\n",1331.2);
            printf("%3s\n",a);
            printf("%9s\n",a);
            printf("%-9s\n",a);
            printf("%4.2s\n",a);
            printf("%2.5s\n",a);
            printf("%-4.2s\n",a);
            printf("%-2.5s\n",a);

輸出結果:

參見http://www.cnblogs.com/zhenzhen123/p/4970288.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章