快速複習C語言 - 2格式化輸入與輸出

格式化輸入輸出函數

printf()

函數原型聲明:int printf(const char *format, ...);函數

其中 format 用法:%[修飾符]輸出格式字符code

標準輸出格式字符表:

格式字符 說明
di 十進制整數
xX 十六進制無符號整數
o 八進制無符號整數
u 無符號十進制整數
c 單一字符
s 字符串
eE 指數形式浮點小數
f 小數形式浮點小數
g 自動選擇 ef 結果中較短的一種,且只保留有效數字
%% 輸出百分號自己

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
# 在八進制數和十六進制數前顯示前導 00x
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);
相關文章
相關標籤/搜索