在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

putchar()函數詳解

麥辣雞腿堡 ? 來源:CSDN博客 ? 作者:Jambo! ? 2023-01-22 16:59 ? 次閱讀

實例

1.清空緩沖區

下面一段把代碼是輸入一段密碼,并且還要用getchar()接受是否確認密碼的選項:

int main()

{

char password[20] = { 0 };

int ch = 0;

printf("輸入密碼\\n");

scanf("%s", password);

printf("請確認密碼(Y/N):");

ch = getchar();

if (ch == 'Y')

{

printf("成功\\n");

}

else

{

printf("失敗\\n");

}

return 0;

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

我們輸入一端密碼后,還未輸入Y或N,代碼就自動打印“失敗”并退出運行

這其實還是scamf無法讀取回車在作祟

當我們輸入1234567后,此時在輸入緩沖區中其實存的是:1234567\\n

scanf("%s", password);語句讀取字符串,因為它無法讀取\\n所以此時scanf只會讀取走1234567,在輸入緩沖區中還有\\n

所以在之后的ch = getchar();中,就會讀取\\n,不等于Y,所以會打印失敗

所以,要把緩沖中的 \\n 消化掉,也就是清空緩沖區

只要,再寫一個getchar()語句,將\\n讀取走,就可以了

代碼如下:

int main()

{

char password[20] = { 0 };

int ch = 0;

printf("輸入密碼\\n");

scanf("%s", password);

printf("請確認密碼(Y/N):");

getchar(); //清空緩沖區

ch = getchar();

if (ch == 'Y')

{

printf("成功\\n");

}

else

{

printf("失敗\\n");

}

return 0;

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

運行成功

image.png

2.字符串中有空格

以下代碼是輸入一個字符串再輸出:

int main()

{

char str[20] = { 0 };

scanf("%s", str);

printf("%s", str);

return 0;

}

1

2

3

4

5

6

7

如果輸入的字符串是連續的,也就是沒有空格的,此代碼正常運行

如果輸入的字符串是有字符的,就會出現錯誤

image.png

錯誤的原因還是scanf無法讀取緩沖區中的空格,所以接下來要使用getchar去讀取字符串

因為輸入的一段字符串一定會是以\\n為結尾

所以在前面的while ((ch = getchar()) != 'EOF)改成while ((ch = getchar()) != '\\n')即可,只要不遇到\\n就一直讀取下去

代碼如下:

int main()

{

char str[20] = { 0 };

char ch = 0;

while ((ch = getchar()) != '\\n')

{

putchar(ch);

}

return 0;

}

1

2

3

4

5

6

7

8

9

10

運行結果:

image.png

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 函數
    +關注

    關注

    3

    文章

    4361

    瀏覽量

    63628
  • 代碼
    +關注

    關注

    30

    文章

    4870

    瀏覽量

    69906
收藏 人收藏

    評論

    相關推薦

    STM32CubeIde生成的工程,使用printf函數沒有調用_write和__io_putchar函數,為什么?

    (int ch) 函數,發現沒有串口沒有輸出,使用SWD進行debug,并對syscalls.c中的_write函數以及重寫的io_putchar函數打了斷點,結果printf執行后,
    發表于 05-24 06:13

    重定向了fputc及putchar函數,但printf沒有輸出,為什么?

    重定向了fputc及putchar函數,但printf沒有輸出 刪除了drivers/drv_uart.c drv_uart.h 刪除了文件rt-thread\\components
    發表于 07-18 07:44

    是否可以在調試模式下使用''printf''或''putchar''函數

    大家好, 關于ST VD和STM8的一個小問題。是否可以在調試模式下使用''printf''或''putchar''函數在控制臺中顯示消息或類似的東西? (我的意思是不使用USART) 我
    發表于 12-06 16:16

    printf/fputc/putchar和vsprintf怎么使用?

    printf/fputc/putchar和vsprintf怎么使用?
    發表于 12-02 06:09

    PICC庫函數詳解

    PICC庫函數詳解
    發表于 04-18 20:13 ?132次下載

    Android開發手冊—API函數詳解

    Android開發手冊—API函數詳解
    發表于 10-17 09:01 ?13次下載
    Android開發手冊—API<b class='flag-5'>函數</b><b class='flag-5'>詳解</b>

    基于Android開發手冊—API函數詳解

    基于Android開發手冊—API函數詳解
    發表于 10-24 09:06 ?18次下載
    基于Android開發手冊—API<b class='flag-5'>函數</b><b class='flag-5'>詳解</b>

    淺談keil中庫函數和寄存器關系

    在一個芯片系統里,uart的驅動是廠商自己寫好的,那他們是怎么關聯printf到uart的呢?有人說,printf最終是調用了putchar,我搜索了源碼,沒有這個函數,估計是開發工具,像KeilC
    發表于 06-22 08:19 ?3030次閱讀
    淺談keil中庫<b class='flag-5'>函數</b>和寄存器關系

    網絡函數的習題與詳解詳細說明

    本文檔的主要內容詳細介紹的是網絡函數的習題與詳解詳細說明。
    發表于 09-28 08:00 ?0次下載
    網絡<b class='flag-5'>函數</b>的習題與<b class='flag-5'>詳解</b>詳細說明

    Linux內核GPIO操作函數詳解分析

    本文檔的主要內容詳細介紹的是Linux內核GPIO操作函數詳解分析免費下載。
    發表于 01-22 16:58 ?28次下載

    Android開發手冊API函數詳解資料免費下載

    本文檔的主要內容詳細介紹的是Android開發手冊API函數詳解資料免費下載。
    發表于 02-22 08:00 ?0次下載

    51單片機(STC15W408AS)映射printf函數 串口收發實現

    前提:實現串口收發數據/************************************************* *函數名稱:char putchar(char c
    發表于 11-20 17:51 ?11次下載
    51單片機(STC15W408AS)映射printf<b class='flag-5'>函數</b> 串口收發實現

    如何使用printf函數將字符串打印到串口

    如何使用printf函數將字符串打印到串口該函數名已經在標準輸入輸出庫頭文 件 stdio.h 中定義,原型為 int fputc(int ch, FILE *f)。在usart.c中添加
    發表于 01-12 18:53 ?1次下載
    如何使用printf<b class='flag-5'>函數</b>將字符串打印到串口

    C語言putchar函數介紹

    想從計算機向顯示器輸出一個字符,可以調用系統函數庫中的putchar函數
    的頭像 發表于 03-09 11:02 ?4447次閱讀

    STM32庫函數SystemInit()詳解

    STM32庫函數SystemInit()詳解
    的頭像 發表于 09-18 15:45 ?4653次閱讀
    STM32庫<b class='flag-5'>函數</b>SystemInit()<b class='flag-5'>詳解</b>
    主站蜘蛛池模板: 素股中文字幕 | 亚洲伊人99综合网 | 97久久草草超级碰碰碰 | 亚洲人的天堂男人爽爽爽 | 四虎精品影院4hutv四虎 | 国产五月| 老湿成人影院 | 好色999| aa小视频| 四虎影视永久在线观看 | 国产一卡二卡≡卡四卡无人 | 欧美中字 | 欧美午夜色大片在线观看免费 | 国产精品理论 | 免费在线观看a | 奇米影视777狠狠狠888不卡 | 男操女免费视频 | 狠狠综合欧美综合欧美色 | 日本免费xxxx色视频 | 性色aⅴ闺蜜一区二区三区 性色成人网 | 欧美精品一区二区三区视频 | 毛片日韩 | www.色妞| 亚洲一区二区精品视频 | 精品久久天干天天天按摩 | 久久91精品牛牛 | 亚洲欧美日韩特级毛片 | 色人阁综合 | 毛片福利 | 成人欧美一区二区三区白人 | 欧美天天射 | 性欧美欧美| 三级黄色在线视频中文 | 亚洲电影一区二区 | 精品国产一二三区在线影院 | 日本网络视频www色高清免费 | 午夜免费免费啪视频观看 | 天天爽夜夜爽精品免费 | 久久人人爽爽爽人久久久 | 狠狠躁夜夜躁人人爽天天miya | 欧美一欧美一区二三区性 |