在C語(yǔ)言中,輸入和輸出是經(jīng)由標(biāo)準(zhǔn)庫(kù)中的一組函數(shù)來(lái)實(shí)現(xiàn)的。在ANSI C中,這些函數(shù)被定義在頭文件;中。
成都創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都做網(wǎng)站、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的坡頭網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
putchar() getchar() 輸出輸入函數(shù)只針對(duì)單個(gè)字符的操作。puts(),gets() 輸出輸入函數(shù)可以單個(gè)字符操作(但是功能有限的),主要是針對(duì)字符串操作。
標(biāo)準(zhǔn)輸入:scanf(可以輸入數(shù)字,字符,字符串等。輸入以空白字符分割)6)標(biāo)準(zhǔn)輸出:printf(可以格式花輸出數(shù)字,字符,字符串等。
看情況你的代碼是正常退出了。問(wèn)題就出現(xiàn)在scanf上。建議你不要使用這個(gè)函數(shù),在循環(huán)輸入時(shí)使用它不行。用gets就好了 。
因?yàn)閟canf在輸入數(shù)只時(shí),碰到非數(shù)值時(shí)就停下來(lái)了,回車、空格等等都是非數(shù)值。
這個(gè)問(wèn)題是由于輸入緩沖區(qū)內(nèi)有東西引起的,這個(gè)時(shí)候scanf就會(huì)直接讀入緩沖區(qū)內(nèi)存在的內(nèi)容,從而跳過(guò)了鍵盤輸入。輸入緩沖區(qū)存在內(nèi)容有多種原因,之前進(jìn)行過(guò)輸入是可能原因之一。
因?yàn)榍懊嬖趕canf整型數(shù)a和b的時(shí)候,輸入緩沖區(qū)里就積攢了回車符,所以最后那個(gè)scanf直接把之前積攢在輸入緩沖區(qū)的回車符取了出來(lái)賦給了c。
1、c. 在輸入多個(gè)數(shù)值數(shù)據(jù)時(shí),若格式控制串中沒(méi)有非格式字符作輸入數(shù)據(jù)之間的間隔則可用空格,TAB或回車作間隔。C編譯在碰到空格,TAB,回車或非法數(shù)據(jù)(如對(duì)“%d”輸入“12A”時(shí),A即為非法數(shù)據(jù))時(shí)即認(rèn)為該數(shù)據(jù)結(jié)束。
2、使用getch()直接從輸入緩沖區(qū)中讀取一個(gè)字符。
3、scanf()是C語(yǔ)言中的一個(gè)輸入函數(shù)。與printf函數(shù)一樣,都被聲明在頭文件stdio.h里,因此在使用scanf函數(shù)時(shí)要加上#include stdio.h。
4、int CountInt()// 從鍵盤輸入字符串,連續(xù)的數(shù)字字符算作一個(gè)整數(shù),統(tǒng)計(jì)其中整數(shù)的個(gè)數(shù)。
5、scanf叫做“格式化輸入”函數(shù),這個(gè)函數(shù)是“脆弱型”的輸入處理,在遇到非法輸入的時(shí)候,只會(huì)跳過(guò),不會(huì)清理輸入緩沖區(qū),造成了你在while中這樣做就是死循環(huán),因?yàn)榫彌_區(qū)一直有“已經(jīng)輸入的并且未清除的內(nèi)容”。