0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

getchar()函數(shù)詳解

麥辣雞腿堡 ? 來(lái)源:CSDN博客 ? 作者:Jambo! ? 2023-01-22 16:57 ? 次閱讀

getchar()

getchar的定義:

int getchar(void)

返回類(lèi)型是int值,所以返回的是字符的ASCII碼

參數(shù)列表中是void,所以不必在括號(hào)中傳參數(shù)

如果getchar讀取失敗,就會(huì)返回EOF

getchar()的一個(gè)重要機(jī)制

在getchar函數(shù)的作用與鍵盤(pán)間,存在一個(gè)輸入緩沖區(qū),從鍵盤(pán)輸入的內(nèi)容會(huì)存在這個(gè)緩沖中,接下來(lái)getchar函數(shù)會(huì)從緩沖區(qū)中取走內(nèi)容

因?yàn)間etchar是對(duì)于字符進(jìn)行操作,所以每次執(zhí)行g(shù)etchar都會(huì)取走輸入緩沖區(qū)中一個(gè)字符

并且getchar還會(huì)取走回車(chē)也就是\\n與空格

我們用下面的代碼進(jìn)行對(duì)輸入緩沖區(qū)機(jī)制的測(cè)試:

int main()

{

char ch = 0;

while ((ch = getchar()) != EOF)

{

putchar(ch);

}

return 0;

}

1

2

3

4

5

6

7

8

9

當(dāng)輸入一個(gè)字符a時(shí),同時(shí)我們會(huì)按下回車(chē),此時(shí)輸入緩沖區(qū)中就有兩個(gè)字符:a\\n

首先,getchar()會(huì)先取走字符a,然后通過(guò)putchar打印出來(lái)

接著循環(huán),getchar()取走字符\\n,然后通過(guò)putchar打印出來(lái),所以在輸出中光標(biāo)不在輸出的a的后面,而在a的下一行

image.png

接著,輸入緩沖區(qū)中以無(wú)內(nèi)容,getchar()就會(huì)讀到EOF,退出循環(huán)

還可以用以下代碼更進(jìn)一步驗(yàn)證getchar()對(duì)于回車(chē)的讀?。?/p>

int main()

{

int i = 0;

char ch = 0;

while ((ch = getchar()) != EOF)

{

putchar(ch);

i++;

}

printf("%d", i);

return 0;

}

1

2

3

4

5

6

7

8

9

10

11

12

13

輸入字符a和b,這里實(shí)際上是輸入a后,按一次回車(chē),輸入b后,按一次回車(chē),所以輸入緩沖區(qū)中的內(nèi)容為:a\\nb\\n,所以getchar()會(huì)讀取四次,所以i的值為會(huì)是4

原文鏈接:https://blog.csdn.net/weixin_64116522/article/details/127956631

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4237

    瀏覽量

    61973
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4671

    瀏覽量

    67771
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    stm32f103rct6 prinrf可以正常使用,但是無(wú)法使用getchar和scanf函數(shù),為什么?

    已使用如下代碼重定向,prinrf可以正常使用,但是無(wú)法使用getchar和scanf函數(shù),求大佬解答 #ifdef __GNUC__ #define PUTCHAR_PROTOTYPE int
    發(fā)表于 04-09 07:47

    USART中的getchar()函數(shù)功能不能實(shí)現(xiàn)

    int fputc(int ch, FILE *f)#define GETCHAR_PROTOTYPE int fgetc(FILE *f)#endif /* __GNUC__ */和下面這兩個(gè)函數(shù)定義
    發(fā)表于 11-08 08:58

    linux getchar函數(shù)的特點(diǎn)與使用

    1)函數(shù)原型int getchar(void);2)函數(shù)功能從stdin中讀取一個(gè)字符。3)返回值返回讀取字符的ASCII值或者EOF字符或者出錯(cuò)值。4)頭文件#include
    發(fā)表于 07-24 07:21

    getch()與getchar()函數(shù)的區(qū)別是什么?

    getch()與getchar()函數(shù)的區(qū)別是什么?
    發(fā)表于 10-14 08:31

    怎樣用printf 函數(shù)getchar 函數(shù)去簡(jiǎn)化STM32串口數(shù)據(jù)的傳輸呢

    printf 函數(shù)getchar 函數(shù)有何功能?怎樣用printf 函數(shù)getchar 函數(shù)
    發(fā)表于 10-22 07:49

    新手求助啟用RT_USING_POSIX時(shí)getchar調(diào)用過(guò)程

    給各位大佬倒茶,想求助下在開(kāi)啟RT_USING_POSIX時(shí),串口getc()函數(shù)到系統(tǒng)getchar()函數(shù)之間的調(diào)用路徑。小弟在調(diào)試大佬編寫(xiě)的的web_terminal組件時(shí)發(fā)現(xiàn)如果開(kāi)啟了
    發(fā)表于 11-14 14:17

    getch與getchar的區(qū)別是什么?

    1.getchar();從鍵盤(pán)讀取一個(gè)字符并輸出,該函數(shù)的返回值是輸入第一個(gè)字符的ASCII碼;若用戶輸入的是一連串字符,函數(shù)直到用戶輸入回車(chē)時(shí)結(jié)束,輸入的字符連同回車(chē)一起存入鍵盤(pán)緩沖區(qū)。若程序中有
    發(fā)表于 06-20 08:59

    PICC庫(kù)函數(shù)詳解

    PICC庫(kù)函數(shù)詳解
    發(fā)表于 04-18 20:13 ?132次下載

    Android開(kāi)發(fā)手冊(cè)—API函數(shù)詳解

    Android開(kāi)發(fā)手冊(cè)—API函數(shù)詳解
    發(fā)表于 10-17 09:01 ?13次下載
    Android開(kāi)發(fā)手冊(cè)—API<b class='flag-5'>函數(shù)</b><b class='flag-5'>詳解</b>

    基于Android開(kāi)發(fā)手冊(cè)—API函數(shù)詳解

    基于Android開(kāi)發(fā)手冊(cè)—API函數(shù)詳解
    發(fā)表于 10-24 09:06 ?18次下載
    基于Android開(kāi)發(fā)手冊(cè)—API<b class='flag-5'>函數(shù)</b><b class='flag-5'>詳解</b>

    網(wǎng)絡(luò)函數(shù)的習(xí)題與詳解詳細(xì)說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是網(wǎng)絡(luò)函數(shù)的習(xí)題與詳解詳細(xì)說(shuō)明。
    發(fā)表于 09-28 08:00 ?0次下載
    網(wǎng)絡(luò)<b class='flag-5'>函數(shù)</b>的習(xí)題與<b class='flag-5'>詳解</b>詳細(xì)說(shuō)明

    Linux內(nèi)核GPIO操作函數(shù)詳解分析

    本文檔的主要內(nèi)容詳細(xì)介紹的是Linux內(nèi)核GPIO操作函數(shù)詳解分析免費(fèi)下載。
    發(fā)表于 01-22 16:58 ?28次下載

    Android開(kāi)發(fā)手冊(cè)API函數(shù)詳解資料免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是Android開(kāi)發(fā)手冊(cè)API函數(shù)詳解資料免費(fèi)下載。
    發(fā)表于 02-22 08:00 ?0次下載

    空閑任務(wù)鉤子函數(shù)詳解

    空閑任務(wù)鉤子函數(shù)詳解 1、鉤子函數(shù) FreeRTOS中有多個(gè)鉤子函數(shù),鉤子函數(shù)類(lèi)似回調(diào)函數(shù),當(dāng)某
    的頭像 發(fā)表于 07-30 10:57 ?907次閱讀
    空閑任務(wù)鉤子<b class='flag-5'>函數(shù)</b><b class='flag-5'>詳解</b>

    STM32庫(kù)函數(shù)SystemInit()詳解

    STM32庫(kù)函數(shù)SystemInit()詳解
    的頭像 發(fā)表于 09-18 15:45 ?3422次閱讀
    STM32庫(kù)<b class='flag-5'>函數(shù)</b>SystemInit()<b class='flag-5'>詳解</b>