目錄
- 格式化輸入輸出函式
- printf()
- 標準輸出格式字符表:
- 修飾符表
- scanf()
- printf()
格式化輸入輸出函式
printf()
函式原型宣告:int printf(const char *format, ...);
其中 format 用法:%[修飾符]輸出格式字符
標準輸出格式字符表:
| 格式字符 | 說明 |
|---|---|
d,i |
十進制整數 |
x,X |
十六進制無符號整數 |
o |
八進制無符號整數 |
u |
無符號十進制整數 |
c |
單一字符 |
s |
字串 |
e,E |
指數形式浮點小數 |
f |
小數形式浮點小數 |
g |
自動選擇 e 和 f 結果中較短的一種,且只保留有效數字 |
%% |
輸出百分號本身 |
Example:
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
宏定義一年的秒數,這個數肯定很大,防止溢位,可以寫作:
#define SEC_YEAR (60LL*60LL*24LL*365LL)
下列陳述句可以輸出該陳述句所在的函式以及在檔案中的行號:
printf("[%s:%d]\n", __FUNCTION__, __LINE__);
scanf()
函式原型宣告:int scanf(const char *format, ...);
用 scanf() 接收字串要注意不能有空格,字串相關操作最好使用專門的字串函式,
scanf() 回傳值:回傳正確接收到的資料個數,Upon successful return, these functions return the number of characters printed (not including the trailing '\0' used to end output to strings).
當多個輸入放在一起用時,可能會出現意想不到的結果,比如:
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);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/13785.html
標籤:C
下一篇:C連載6-宣告與賦值、雜論
