getchar()和scanf經(jīng)驗(yàn)
1矮固,getchar()和scanf都是從緩沖區(qū)讀取數(shù)據(jù),如果首先使用了scanf("%s",&a)最終錄入數(shù)據(jù)后回車,這樣子會(huì)遺留一個(gè)'\n',如果在后面再scanf("%c",&b)啥的似嗤,會(huì)直接把'\n'當(dāng)做要錄入的數(shù)據(jù)放入b中。所以可以scanf("%c",&a)后加一個(gè)getchar()獲取了'\n'届宠,或者使用fflush(stdin)清除緩沖區(qū)烁落。
2,如果緩沖區(qū)存在1a這樣的數(shù)據(jù)豌注,其1和a分別代表int類型和char類型數(shù)據(jù)伤塌,若是使用了getchar()讀取,因?yàn)槠錈o(wú)法讀取int類型的1所以會(huì)直接跳到1后面的a轧铁,然后讀取了a在清除了緩沖區(qū)寸谜,這時(shí)1也被清除了。
3属桦,scanf("%d",&a)無(wú)法讀取'\n'其是字符。