scanf()--------按照指定格式接受用戶輸入(工作原理理解要點:正則表達(dá)式)
創(chuàng)新互聯(lián)公司服務(wù)項目包括蒙城網(wǎng)站建設(shè)、蒙城網(wǎng)站制作、蒙城網(wǎng)頁制作以及蒙城網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,蒙城網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到蒙城省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
格式:
int num1= -1,num2 = -1; scanf("%i[間隔符]%i",&num1,&num2); /* %var指向變量在內(nèi)存的詳細(xì)地址,獲得用戶輸入,直接將值寫進指定內(nèi)存空間中; [間隔符]可省略,省略后,C語言默認(rèn)以空白字符分隔用戶輸入的變量值;如果不為空,則要求用戶必須按照指定格式輸入,否則變量未必能夠全部接受到用戶輸入的值; C語言默認(rèn)以\n即換行符結(jié)束輸入; C語言默認(rèn)%i此類的占位符可以進行無限匹配,直至匹配失敗,默認(rèn)用戶變量值輸入結(jié)束; 接收用戶輸入過程:當(dāng)C獲得用戶從鍵盤的輸入后,首先會將輸入內(nèi)容保存到一個輸入緩存區(qū)內(nèi),強調(diào)保存到輸入緩存區(qū)的內(nèi)容包括用戶輸入的所有字符,當(dāng)然空白字符也包括在其中, 然后會以格式控制字符串匹配緩存區(qū)內(nèi)的內(nèi)容.如上例,首先會%i匹配緩存區(qū)內(nèi)的內(nèi)容,當(dāng)%i進行匹配的時候,如間隔符為空,其首先遇到空白字符時,會自動忽略,再次遇到空白 字符,則結(jié)束num1的值得獲取,開始先一個變量的獲取;當(dāng)間隔符不為空,%i會匹配到間隔符時,結(jié)束獲取,開始下一個變量的獲取. */ int num = -1; char char_value; scanf("%i[間隔符]%c",&num,&char_value); /* %c可以匹配任何單字節(jié)字符,其中也包括空白字符; 所以當(dāng)將用戶輸入存入緩存區(qū)后,如果間隔符為空,C默認(rèn)以空白字符分隔不同變量輸入的值.首先C會以%i匹配緩存內(nèi)的內(nèi)容,在沒有匹配到值之前,遇到的空白字符皆會自動忽略,直至匹 配到值,再次遇到空白字符是,結(jié)束第一個變量值得獲取,也即以為除了第一個變量值之外,變量值之后的空白字符和第二個變量的值仍然保存在空白字符區(qū)內(nèi),C會%c匹配剩余字符, 由于空白字符也是一個字符,且%c只能匹配一個單字節(jié)字符,所以%c匹配一個空白字符后,整個匹配過程結(jié)束,而%c卻沒有匹配到自己本應(yīng)匹配到的值.解決辦法:輸入的兩個變量的值 緊挨不留空白; */ printf("請輸入一個數(shù)字:\n"); int num = -1; scanf("%i",&num); prinf("請輸入一個字符:\n"); char char_value; scanf("%c",&char_value); printf("num = %i,%char_value = %c",num,char_value); /* 當(dāng)按照如上格式,分兩次分別獲得輸入,且后面的一次輸入為字符時,結(jié)果就會發(fā)現(xiàn),第二個scanf函數(shù)根本就沒有運行,直接就輸出了,且char_value的值為空; 其原因在與當(dāng)緩存區(qū)內(nèi)有值時,C就不會要求用戶輸入,直接拿緩存區(qū)內(nèi)的值去和%c進行匹配,由于在獲取完第一次輸入后,緩存區(qū)內(nèi)至少還有一個\n,所以%c與\n匹配成功,直接進行輸出, 不再需要用戶輸入.當(dāng)然,當(dāng)?shù)诙潍@得的輸入為整型,就不存在上述過程了. */
標(biāo)題名稱:C語言之scanf函數(shù)
當(dāng)前網(wǎng)址:http://chinadenli.net/article14/gehjge.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、網(wǎng)站策劃、品牌網(wǎng)站建設(shè)、面包屑導(dǎo)航、手機網(wǎng)站建設(shè)、虛擬主機
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)