【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);

輸出結果:

輸出結果


免責聲明!

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



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