在线观看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>
    主站蜘蛛池模板: 欧美一级特黄aaaaaa在线看片 | 国产精品高清久久久久久久 | 91精品啪国产在线观看免费牛牛 | 四虎永久精品视频在线 | www.嫩草影院 | 男女午夜特黄毛片免费 | 亚洲毛片儿 | 嫩草影院久久国产精品 | 亚洲免费黄色网址 | 精品美女在线 | 国产汉服被啪福利在线观看 | 成人永久免费视频网站在线观看 | yy6080亚洲半夜理论一级毛片 | 亚洲免费三级 | 天天操女人 | 中文一区在线观看 | 色窝网| 99久久99久久精品免费看子伦 | 天堂中文www在线 | 欧美午夜电影 | 国产综合13p | 国产成年女一区二区三区 | 国产天美| 无毒三级 | 久久精品人人爽人人爽快 | 国产亚洲精品久久午夜 | 亚洲人成电影院在线观看 | 亚洲一区二区免费在线观看 | 免费国产午夜高清在线视频 | 天天操天天干天天做 | 高清人人天天夜夜曰狠狠狠狠 | 天天爱夜夜 | 精品99久久| 成年片色大黄全免费 | 国产精品第页 | freesexvideo性残疾 | 久久鬼| 91福利网| 色多多免费视频观看区一区 | 免费黄色小视频 | 曰韩高清一级毛片 |