C中的格式字符有d,o,x,u,c,s,f,e,g等,以前有看到其中某些能夠大寫(待肯定)。
如:web
%d整型輸出,%ld長整型輸出,函數
%o以八進制數形式輸出整數,spa
%x以十六進制數形式輸出整數,指針
%u以十進制數輸出unsigned型數據(無符號數)。orm
%c用來輸出一個字符,字符串
%s用來輸出一個字符串,it
%f用來輸出實數,以小數形式輸出,io
%e以指數形式輸出實數,編譯
%g根據大小自動選f格式或e格式,且不輸出無心義的零。變量
c語言中以16進制輸出時%0x和%x有什麼區別?
標準C語言庫函數fprintf/printf格式字符串的轉換說明形式是這樣的:
%[標誌][最小輸出寬度][.精度][長度修正符]類型
方括號括起來爲option項目。
當[標誌]是0或多個標誌字符,能夠是任意順序,經常使用有如下幾個:
- 左對齊,缺省是右對齊。
+ 帶符號的值前面老是有個符號,也就是正數前面有+號,負數前面有-號。
0 輸出值的寬度小於最小寬度的話,用0填充,缺省是用空格填充。
0也是是一個標誌字符,意思就是用0填充
特殊狀況:C語言%p的含義:
格式控制符「%p」中的p是pointer(指針)的縮寫。指針的值是語言實現(編譯程序)相關的,但幾乎全部實現中,指針的值都是一個表示地址空間中某個存儲器單元的整數。printf函數族中對於%p通常以十六進制整數方式輸出指針的值,附加前綴0x。
示例:
int i = 1;
printf("%p",&i);
至關於
int i = 1;
printf("0x%x",&i);
對於32位的指針,輸出通常會是相似0xf0001234之類的結果。
%p存在的理由除了附加前綴輸出的便利性之外,如LS所說,指針的大小是不肯定的,由實現決定。根據地址空間的大小,通常有16位、32位、64位的指針。儘管目前32位平臺上的指針通常全是32位的,但舊的一些平臺上可能有多種長度的指針(例如非標準的near、far、huge修飾的pointer)混用,沒法用%x、%lx、%hx、%llx(對應int、long、short、long long)中的任意一種保證能輸出全部類型的指針。
scanf(控制字符,地址列表) ;
格式字符的含義同printf函數,地址列表是由若干個地址組成的表列,能夠是變量的地址,或字符串的首地址。如scanf("%d%c%s",&a,&b,str);
注意控制字符之間的格開字符,通常數據之間的分隔爲:空格,tab,和回車;如獲取的爲字符時,空格和tab都可當爲字符給自動錄入。