格式化輸入函數(shù)scanf( )
scanf( )功能:
按照指定的格式讀入鍵盤上輸入的若干個任意類型的數(shù)據(jù)故觅,存入到argument參數(shù)所指向的內(nèi)存單元猛蔽,函數(shù)返回值為讀入并賦給argument的數(shù)據(jù)個數(shù)惩淳,出錯則返回0疯搅。
scanf( )使用形式:
scanf("格式字符串",輸入項首地址列表);
scanf( )函數(shù)執(zhí)行時將輸入的數(shù)據(jù)流按指定格式轉(zhuǎn)換為數(shù)據(jù),存入相應(yīng)的存儲單元中结耀。
格式字符串:
%[*][width][F|N|h|l]type
(1)類型字符type:
類型字符 | 功能說明 |
---|---|
d或i | 以十進制有符號形式輸入整數(shù) |
u | 以十進制無符號形式輸入整數(shù) |
o | 以八進制無符號形式輸入整數(shù) |
x或X | 以十六進制形式輸入整數(shù) |
f | 以小數(shù)形式輸入實數(shù) |
c | 輸入單個字符 |
s | 輸入一個字符串 |
e或E外永,g或G | 與f作用相同崎脉,e,g可替換f |
(2)寬度指示符width:
width是一個十進制正整數(shù)的形式,表示該輸入項最多可接收的字符個數(shù)伯顶。也就是說囚灼,讀取輸入數(shù)據(jù)中相應(yīng)的n位,按需要的位數(shù)賦給相應(yīng)的變量祭衩,多余部分被舍棄灶体。但讀取過程中如遇到空格、Tab或其他不可轉(zhuǎn)換的字符掐暮,輸入個數(shù)可少于寬度指示蝎抽。
(3)賦值抑制字符"*":
表示本輸入項對應(yīng)的數(shù)據(jù)讀入后,不賦給相應(yīng)的變量路克,該變量的數(shù)據(jù)將由下一個格式指示符指定的數(shù)據(jù)輸入樟结。
scanf( )函數(shù)的數(shù)據(jù)輸入操作:
(1)輸入多個數(shù)據(jù)的分隔處理:如果在格式字符串中不包含除了格式指示符之外的普通字符,則在輸入多個數(shù)據(jù)時衷戈,可以使用空格隔開狭吼,或者用Tab鍵分開,或者以回車鍵隔開殖妇。
(2)當(dāng)“格式字符串”中出現(xiàn)普通字符時,普通字符不會顯示破花,必須在規(guī)定輸入時原樣輸入谦趣。
(3)當(dāng)scanf( )函數(shù)中的格式字符串中出現(xiàn)轉(zhuǎn)義字符(如"\n"),系統(tǒng)并不把它當(dāng)轉(zhuǎn)義字符解釋座每,從而產(chǎn)生一個控制操作前鹅,而是將其視為普通字符,所以也要原樣輸入峭梳。
(4)輸入數(shù)據(jù)時舰绘,遇到以下情況蹂喻,系統(tǒng)認為該數(shù)據(jù)輸入結(jié)束:
- 遇到空格、回車鍵或者Tab鍵捂寿。
- 遇到輸入域?qū)挾冉Y(jié)束口四。
- 遇到非法輸入。例如在輸入數(shù)值數(shù)據(jù)時秦陋,遇到字母等非數(shù)值符號(數(shù)值符號僅由數(shù)字字符0~9蔓彩、小數(shù)點和正負號構(gòu)成)。
(5)使用格式說明符"%c"輸入單個字符時驳概,空格和轉(zhuǎn)義字符均作為有效字符被輸入赤嚼。
單個字符的輸入函數(shù)getchar( )
getchar( )功能:
從標準輸入設(shè)備(鍵盤)輸入一個字符,并返回輸入字符的ASCII值顺又。
注意:
- getchar( )只能用于單個字符的輸入更卒,一次只能輸入一個字符。
- 使用getchar( )輸入字符是稚照,需按下回車鍵表示輸入結(jié)束蹂空。
- getchar( )將回車也作為一個輸入,所以輸入連續(xù)的兩個數(shù)據(jù)時需要注意锐锣。
- 如果只是想輸入一個字符并輸出腌闯,也可以使用在putchar( )函數(shù)中嵌入getchar( )函數(shù)的形式。
putchar(getchar( ));
雕憔。