printf()
函數原型聲明:int printf(const char *format, ...);
函數
其中 format 用法:%[修飾符]輸出格式字符
code
格式字符 | 說明 |
---|---|
d ,i |
十進制整數 |
x ,X |
十六進制無符號整數 |
o |
八進制無符號整數 |
u |
無符號十進制整數 |
c |
單一字符 |
s |
字符串 |
e ,E |
指數形式浮點小數 |
f |
小數形式浮點小數 |
g |
自動選擇 e 和 f 結果中較短的一種,且只保留有效數字 |
%% |
輸出百分號自己 |
Example:orm
int num = 2233; printf("DEC: num = %d\nHEX: num = %x\nOCT: num = %o\n", num, num, num); char ch = 120; printf("Char: ch = %c\nStr: %s\n", ch, "ArchLinux"); float bi = 22.33; printf("%%e: bi = %e\n%%f: bi = %f\n%%g: bi = %g\n", bi, bi, bi);
上述代碼輸出結果:字符串
DEC: num = 2233 HEX: num = 8b9 OCT: num = 4271 Char: ch = x Str: ArchLinux %e: bi = 2.233000e+001 %f: bi = 22.330000 %g: bi = 22.33
修飾符 | 功能 |
---|---|
m |
設置輸出數據域寬,若數據長度 < m 左補空格,不然按實際輸出 |
.n |
對於實數,指定小數點後位數(四捨五入); 對於字符串,指定實際輸出位數 |
- |
輸出的數據在域內左對齊(不加此修飾符則默認爲右對齊) |
+ |
指定在有符號數的正數前顯示正號 |
0 |
用於補齊的空格替換成 0 |
# |
在八進制數和十六進制數前顯示前導 0 ,0x |
l |
在 d , o , x , u 前,指定輸出精度爲 long 型在 e , f , g 前,指定輸出精度爲 double 型 |
爲防止數據溢出,能夠在常量數據後面添加字母來指定數據類型,好比 12L
表示 long 類型的 12原型
宏定義一年的秒數,這個數確定很大,防止溢出,能夠寫做:string
#define SEC_YEAR (60LL*60LL*24LL*365LL)
下列語句能夠輸出該語句所在的函數以及在文件中的行號:io
printf("[%s:%d]\n", __FUNCTION__, __LINE__);
scanf()
函數原型聲明:int scanf(const char *format, ...);
table
用 scanf()
接收字符串要注意不能有空格。字符串相關操做最好使用專門的字符串函數。function
scanf() 返回值:返回正確接收到的數據個數。Upon successful return, these functions return the number of characters printed (not including the trailing '\0' used to end output to strings).form
當多個輸入放在一塊兒用時,可能會出現意想不到的結果,好比:
scanf("%d", &i); scanf("%c", &ch); printf("i = %d, ch = %d\n", i, ch); // ch = 10, ASCII 10 = LF
當輸入 i 的值按回車以後,全部的輸入都結束了,ch 輸出爲 10,這是由於 ch 得到了換行符,換行符的 ASCII 碼爲 10。能夠用抑制符解決這個問題:
scanf("%d", &i); scanf("%*c%c", &ch);