国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

格式轉換說明符scanf,printf

2019-11-08 02:24:23
字體:
來源:轉載
供稿:網(wǎng)友

格式轉換說明符scanf,PRintf

printf、sprintf、scanf、sscanf等格式化函數(shù)在使用是需要特別小心,另外如果使用scanf_s這樣的安全函數(shù),更應當小心,因為如果格式控制有問題,可能直接導致格式化失敗或運行時錯誤。 表一:轉換說明符及作為結果的打印輸出

轉換說明 輸出
%a 浮點數(shù)、十六進制數(shù)字和p-記數(shù)法 (C99)
%A 浮點數(shù)、十六進制數(shù)字和P-記數(shù)法 (C99)
%c 一個字符
%d 有符號十進制整數(shù)
%e 浮點數(shù)、e-記數(shù)法
%E 浮點數(shù)、E-記數(shù)法
%f 浮點數(shù),十進制記數(shù)法
%g 根據(jù)數(shù)值不同自動選擇%f或者%e。%e格式在指數(shù)小于-4或者大于等于精度時使用
%G 根據(jù)數(shù)值不同自動選擇%f或者%E。%E格式在指數(shù)小于-4或者大于等于精度時使用
%i 有符號十進制整數(shù) (與%d相同)
%o 無符號八進制整數(shù)
%p 指針(就是指地址)
%s 字符串
%u 無符號十進制整數(shù)
%x 使用十六進制數(shù)字0f 的無符號十六進制整數(shù)
%X 使用十六進制數(shù)字0F的無符號十六進制整數(shù)
%% 打印一個百分號

表二:printf() 修飾符

修飾符 意義
標志 五種標志 (-、+、空格、# 和0) 都將在表三中描述,可以使用零個或多個標志
digit(s) 字段寬度的最小值。如果該字段不能容納要打印的數(shù)或者字符串,系統(tǒng)會使用更寬的字段。示例:“%4d”
.digit(s) 精度。對于%e、%E和%f轉換,是將要在小數(shù)點的右邊打印的數(shù)字的位數(shù)。對于%g和%G轉換,是有效數(shù)字的最大位數(shù)。對于%s轉換,是將要打印的字符的最大數(shù)目。對于整數(shù)轉換,是將要打印的數(shù)字的最小位數(shù);如果必要,要使用前導零來達到這個位數(shù)。只使用“.”表示其后跟隨一個零,所以%.f與%.0f相同。示例:“%5.2f”打印一個浮點數(shù),他的字段寬度為5個字符,小數(shù)點后有兩個數(shù)字。
h 和整數(shù)轉換說明符一起使用,表示一個short int 或者 unsigned short int 類型數(shù)值。示例:“%hu”、“%hx”和“%6.4hd”
hh 和整數(shù)轉換說明符一起使用,表示一個signed char 或者unsigned char類型數(shù)值。示例:“%hhu”、“%hhx”和“%6.4hhd”
j 和整數(shù)轉換說明符一起使用,表示一個intmax_t或uintmax_t值。示例:“%jd”和“%8jX”
l 和整數(shù)說明符一起使用,表示一個long int 或者unsigned long int 類型值。示例:“%ld”和“%8lu”
ll 和整數(shù)說明符一起使用,表示一個long long int或 unsigned long long int 類型值 (C99)。示例:“%lld”和“%8llu”
L 和浮點轉換說明符一起使用,表示一個long double值。示例:“%Lf”和“%10.4Le”
t 和整數(shù)轉換說明符一起使用,表示一個ptrdiff_t值(與兩個指針之間的差相對應的類型) (C99)示例:“%td”和“%12ti”
z 和整數(shù)轉換說明符一起使用,表示一個size_t值(sizeof返回的類型) (C99)。示例:“%zd”和“%12zx”

表三:printf()的標志

修飾符 意義
- 項目是左對齊的,也就是說,會把項目打印在字段的左側開始處。示例:“%-20s”
+ 有符號的值若為正,則顯示帶加號的符號;若為負,則帶減號的符號。示例:“%+6.2f”
(空格) 有符號的值若為正,則顯示時帶前導空格(但是不顯示符號);若為負,則帶減號符號。+標志會覆蓋空格標志。示例:“% 6.2f”
# 使用轉換說明的可選形式。若為%o格式,則以0開始;若為%x和%X格式,則以0x或0X開始,對于所有的浮點形式,#保證了即使不限任何數(shù)字,也打印一個小數(shù)點字符。對于%g和%G格式,它防止尾隨零被刪除。示例:“%#o”、“%#8.0f”和“%+#10.3E”
0 對于所有的數(shù)字格式,用前導零而不是用空格填充字段寬度。如果出現(xiàn)-標志或者指定了精度(對于整數(shù))則忽略該標志。示例:“%010d”和“%08.3f”

表四:ANSIC 中 scanf()的轉換說明符

轉換說明符 意義
%c 把輸入解釋成一個字符
%d 把輸入解釋成一個有符號十進制整數(shù)
%e,%f,%g, %a 把輸入解釋成一個浮點數(shù) (%a是C99標準)
%E,%F,%G,%A 把輸入解釋成一個浮點數(shù) (%A是C99標準)
%i 把輸入解釋成一個有符號十進制整數(shù)
%o 把輸入解釋成一個有符號八進制數(shù)
%p 把輸入解釋成一個指針(地址)
%s 把輸入解釋成一個字符串;輸入的內容以一個非空白字符作為開始,并且包含知道下一個空白字符的全部字符
%u 把輸入解釋成一個無符號十進制整數(shù)
%x,%X 把輸入解釋成一個有符號十六進制整數(shù)

表五: scanf()的轉換修飾符

修飾符 意義
* 滯后賦值。示例:“%*d”
digit(s) 最大字段寬度;在達到最大字段寬度或者遇到第一個空白字符時(不管哪一個先發(fā)生都一樣)停止對輸入項的讀取。示例:“%10s”
hh 把整數(shù)讀作signed char 或 unsigned char 。示例:“%hhd”“%hhu”
ll 把整數(shù)讀作long long或者 unsigned long long (C99)。示例:“%lld”“%llu”
h,l或L “%hd”和“hi”指示該值將會存儲在一個short int中。“%ho”“%hx”和“%hu”指示該值將會存儲在一個unsigned short int中。“%ld”和“%li”指示該值將會存儲在一個long中。“%lo”“%lx”和“%lu”指示該值將會存儲在一個unsigned long中。“%le”“%lf”和“%lg”指示該值以double類型存儲。將L(而非l)與e、f和g一起使用指示該值以long double類型存儲。如果沒有這些修飾符,d、i、o和x指示int類型,而e、f和g指示float類型。

表附一:特別說明符

轉換說明符 意義
%I64 配合u,d等,可以輸入輸出64位整數(shù).MSVC平臺有效.如%I64u , %I64d. 注意大寫

小結:一個字節(jié)的用%c,%hhu,%hhd等,兩個字節(jié)用%hu,%hd等,四個字節(jié)用%d,%u等8個字節(jié)的用%lld,%llu等. 盡量不要用%I64d這樣不兼容的格式.


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 鹤峰县| 泌阳县| 阳西县| 渝北区| 白水县| 邳州市| 玉门市| 上虞市| 英山县| 鲁甸县| 开原市| 郑州市| 大丰市| 乌苏市| 长顺县| 治县。| 陆河县| 通江县| 郸城县| 蛟河市| 曲沃县| 天水市| 洪雅县| 巴彦县| 锦州市| 通山县| 布尔津县| 和田县| 乌兰察布市| 改则县| 松滋市| 沅江市| 策勒县| 双柏县| 北宁市| 恭城| 全州县| 陈巴尔虎旗| 富阳市| 新沂市| 安图县|