溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C語言庫(kù)函數(shù)getchar()怎么使用

發(fā)布時(shí)間:2022-07-28 11:12:40 來源:億速云 閱讀:121 作者:iii 欄目:開發(fā)技術(shù)

今天小編給大家分享一下C語言庫(kù)函數(shù)getchar()怎么使用的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

getchar()的描述以及用法

getchar()是stdio.h中的庫(kù)函數(shù),它的作用是從緩沖區(qū)中讀取一個(gè)字符,如果緩沖區(qū)中沒有字符可供讀取,它就會(huì)等待終端鍵盤輸入字符,按回車鍵表示輸入結(jié)束。

* 回車鍵也算一個(gè)字符,放在緩沖區(qū)中(后面會(huì)在VS調(diào)試監(jiān)視出給大家看)*

下面是 getchar() 函數(shù)的聲明:

int getchar(void)

該函數(shù)的返回類型是int類型,返回值是用戶輸入字符的ASCII碼值。

案例

基礎(chǔ)的例子就不列舉了,來說說今天刷C語言題目遇到的一個(gè)題目

判斷輸入的是否是字母(簡(jiǎn)單的題目)

int main()
{
    char a = '0';
    scanf("%c", &a);
    if (a >= 'a' && a <= 'z' || a >= 'A' && a <= 'Z')
        printf("YES\n");
    else
        printf("NO\n");
    return 0;
}

直接判斷就可以了,但是我想著可不可以實(shí)現(xiàn)多組輸入,輸入一個(gè)字符判斷一個(gè)字符(雖然題目沒說到)于是我就嘗試寫了如下代碼

int main()
{
    char a = '0';
    while (scanf("%c", &a) != EOF)
    {
        if (a >= 'a' && a <= 'z' || a >= 'A' && a <= 'Z')
            printf("YES\n");
        else
            printf("NO\n");
    }
    return 0;
}

此時(shí)運(yùn)行結(jié)果如下:

C語言庫(kù)函數(shù)getchar()怎么使用

運(yùn)行出來為啥和我想的不一樣,不應(yīng)該輸入一個(gè)只判斷一次嗎?怎么又進(jìn)了一次循環(huán)并自動(dòng)判斷為false輸入NO了?然后我開始調(diào)試。

這是輸入了a之后跳出了第一次循環(huán)

C語言庫(kù)函數(shù)getchar()怎么使用

然后我按F10程序繼續(xù)跑了,進(jìn)入了第二次循環(huán)并直接運(yùn)行了else后的語句

C語言庫(kù)函數(shù)getchar()怎么使用

此時(shí)我才發(fā)現(xiàn)變量a的值發(fā)生了變化,變成了'\n',我才意識(shí)到鍵盤錄入按回車結(jié)束時(shí),回車也算作一個(gè)字符'\n'被留在了緩沖區(qū),所以進(jìn)行了第二次判斷字符&lsquo;\n&rsquo;,則輸出NO,這時(shí)候我才了解到getchar()函數(shù)在這里使用的好處了,所以我對(duì)代碼進(jìn)行了更改

C語言庫(kù)函數(shù)getchar()怎么使用

此時(shí)程序重新運(yùn)行

C語言庫(kù)函數(shù)getchar()怎么使用

要想再次使用scanf就要在這里調(diào)用getchar()把緩沖區(qū)的 '\n' 給拿走,才能完成多組輸入字符的判斷

圖文解釋

C語言庫(kù)函數(shù)getchar()怎么使用

因?yàn)閟canf把\n前面的字符讀取了,此時(shí)緩沖區(qū)還剩下'\n',所以在代碼中加入一條getchar()將'\n'做清除,方便后續(xù)程序的正常進(jìn)行。

以上就是“C語言庫(kù)函數(shù)getchar()怎么使用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI