关于字符的读入与输出
在筆試中,經(jīng)常見到字符的讀入與輸出的題目。逆序打印輸入時(shí)最常見、最基本的考題,復(fù)雜點(diǎn)的就是統(tǒng)計(jì)單詞、逆序打印單詞之類的。難點(diǎn)是如何判斷輸入的結(jié)束,如果用getchar函數(shù),其輸入結(jié)束符為EOF(其打印值為-1),c=getchar(); //c的類型為Int型,因?yàn)镋OF==-1,那么scanf函數(shù)的使用方法呢?
#include<stdio.h>
int main()
{
?????? int i;
?????? char ch;
?????? for(i=0;i<=3;i++)
?????? {
????????????? printf("%d ---- ",i);
????????????? scanf("%c", &ch);
????????????? printf("/n");
?????? }
??????? return 0;
}
運(yùn)行結(jié)果:
0 ---- a
1 ----
2 ---- b
3 ----
產(chǎn)生其原因在于:
因?yàn)?scanf %c 只是讀入一個(gè)字符,而你在輸入時(shí)實(shí)際上輸入的是:某個(gè)字符
+Enter,Enter 產(chǎn)生的/n 也會停留在輸入緩沖區(qū)中,下次調(diào)用 scanf %c 時(shí)就會直接讀到
它而不是等待你再次輸入!同理,getchar()也有類似的行為。所以我們才不提倡使用
scanf("%c", ...),尤其是把它在循環(huán)中。
解決的方法:
(1)、將 scanf("%c", &ch); 修改為:
??????? scanf(" %c", &ch);?? /*在%前加上一個(gè)空格*/
(2)、將 scanf("%c", &ch); 修改為:
??????? scanf("%c%*c", &ch);
?
總結(jié)
以上是生活随笔為你收集整理的关于字符的读入与输出的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【C语言进阶深度学习记录】三十二 函数指
- 下一篇: 《自然语言处理实战入门》---- 停用词