筆記:
%o,八進位制列印
%x, 十六進製制,a-e代表11到15
%x,十六進製制,a-e代表11到15
%i , 有符號十進位制,同%d
列印不同資料型別時的格式:
關於這部分的內容,自己每次用的時候都是去翻書,或者上網查,但是一直沒有發現一篇文章很系統的介紹這一部分的內容,直到讀完了《c陷阱與缺陷》,在附錄中總結了格式化輸入輸出的符號,及其修飾符,今天暫且根據該書整理了簡單格式型別部分,後續的修飾符會另寫總結,本文旨在便於筆者查閱和方便各位博友。
簡單格式型別:
格式字串中的每個格式項都是由乙個%符號打頭,後面接乙個稱為格式碼的字元,格式碼指明了格式轉換的型別。
首先最常用的就是%d, 以10進製列印乙個整數。例如:
c**
printf(「2 + 2 = %d\n」, 2 + 2);
將列印出dos**
2 + 2 = 4.
%u格式項與%d類似,不同之處是%u列印無符號10進製整數。例如:
c**
printf(「%u\n」,-37);
將列印出4294967259.
%o, %x, %x用於列印8進製或者16進製制的整數。
%x, 用小寫字母a, b, c, d, e, f來表示10到15的數字值
%x, 用大寫字母a, b, c, d, e, f來表示10到15的數字值。
例如:
c**
int n = 108;
printf( 「%d decimal = %o octal = %x hex = %x hex \n」, n, n, n, n);
將列印出:
dos**
108 decimal = 154 octal = 6c hex = 6c hex
%s 用於列印乙個字串:與之對應的引數應該是乙個字元指標,指向待輸出的字串首字元的位址,知道遇見乙個空字元』\0』才終止。%s格式項所對應輸出的字串必須以乙個空字元』\0』作為結束標誌。 因為printf函式要一次來定位乙個字串何時結束。如果與%s對應的字串並不是以空字元』\0』作為結束標誌,那麼printf函式將不斷列印出其後面的字元,直到在記憶體中某處找到乙個空字元』\0』為止。這時輸出就可能相當的長。
例如:
c**
printf (「there %s %d item%s in the list. \n」, n!=1? 「are」: 「is」, n, n!=1? 「s」: 「」);
如果n為37,輸出將是:
dos**
there are 37 items in the list.
如果n為1, 輸出將是
dos**
there is 1 item in the list.
注: c**
printf(s);
與 c**
printf(」%s」, s);
兩者含義並不相同,前者把字串s中的任何%字元視為乙個格式項的標誌,其後的字元會被視為格式碼,如果除%%之外的任何格式碼在字串**現,而後面有沒有對應的引數,將會帶來麻煩。而後者將會列印出任何一空字元結尾的字串。
null指標並不指向任何實際的記憶體位置,因此肯定也不可能指向乙個字串。因此,
printf(「%s \n」, null);
的結果將難以預料。
%c 用於列印單個字元:
c**
printf(「%c」, c);
等效於
putchar(c);
但是前者的適應性和靈活性更好,能夠把字元c的值嵌入某個更大的上下文中。與%c格式項對應的引數是乙個為了列印輸出而被轉換為字元型的整型值。例如:
c**
printf( 「the decimal equivalent of 『%c』 is %d \n」, 『*』, 『*』);
將列印出:
dos**
the decimal equivalent of 『*』 is 42.
%g, %e, %f這3個格式項用於列印浮點值。
%g 去掉數字尾綴的0,保留6位有效數字。因此,
c**
printf(「%g %g %g %g %g %g\n」, 1/1.0, 1/2.0, 1/3.0, 2/3.0, 1/4.0, 0.0);
將列印出
1 0.5 0.333333 0.666667(四捨五入) 0.25 0
如果乙個數的絕對值大於999999, 按%g的格式列印這個字元,會採用科學計數法來列印,例如:
c**
printf(「%g\n」, 123456789.0);
將列印出:
1.23457e+08
對於很小的數值,除非該數的指數小於或等於-5, %g格式項才會採用科學計數法表示。因此:
c**
printf(「%g %g %g\n」, 3.14159e-3, 3.14159e-4, 3.14159e-5);
將列印出:
0.00314159 0.000314159 3.14159e-05
%e和%f格式則在用於列印浮點數是,分別要求一律顯式地使用指數形式和禁止使用指數來表示浮點數。例如:
c**
printf( 「%e %f」, 123456789, 123456789)
將列印出:
dos**
1.234567e+08 123456789.000000
格式化列印(二)
printf語句可以規定輸出域的寬度和對齊方式。乙個格式表示式由3個可選的修飾符組成,跟在 後面,並出現在格式說明符之前。width.precision format specifier 描述輸出字段寬度的width是乙個數值。當指定域寬度時,這個域的內容預設為向右對齊。必須指定 來設定左對齊。因此...
php列印pre,php 列印格式化顯示利器
當我們php除錯的時候,用var dump 或 print r列印json資料或array陣列時,html頁面沒有換行顯示,看到的內容一大堆,不好定位。輸出前新增 便可以自動格式化換行顯示。print r 比如列印陣列 print r arr 輸出 array 0 array volume id10...
C C 字串格式化
與scanf 類似,但scanf 以鍵盤為輸入,但sscanf 以固定字串為輸入源 int sscanf char buffer,const char format,argument format 乙個或多個 type t n 非 符號 表示跳過此資料不讀入,如 d s 遇到整數不讀入 遇到字串不讀...