日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【getchar】在C语言中getchar的使用方法和读取规则

發(fā)布時間:2023/12/16 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【getchar】在C语言中getchar的使用方法和读取规则 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 前言
  • 一、getchar是什么?
  • 二、getchar的使用方法
    • 1.只獲取一次(字符/字符串)的代碼樣例
    • 2.循環(huán)獲取(字符/字符串)的代碼樣例
  • 三、getchar的讀取規(guī)則
  • 總結(jié)


前言

今天為大家分享getchar在C語言中的使用


一、getchar是什么?

getchar中文意思是獲取字符,getchar函數(shù)從標準輸入輸出里讀取下一個字符,返回類型為int整形,返回用戶輸入的ASCII碼值,如果到達文件末尾或者出錯返回EOF

二、getchar的使用方法

1.只獲取一次(字符/字符串)的代碼樣例

代碼如下(示例):

#include<stdio.h> int main() {int ch = getchar();putchar(ch);return 0; }

代碼執(zhí)行結(jié)果

2.循環(huán)獲取(字符/字符串)的代碼樣例

代碼如下(示例):

#include<stdio.h> int main() {int ch = 0;while ((ch = getchar()) != EOF){putchar(ch);}return 0; } 注意事項 1.這里的EOF并不是輸入EOF循環(huán)結(jié)束 2.EOF的真實值是-1 3.這里的Ctrl+z的效果便是EOF

代碼執(zhí)行結(jié)果

到這里有些細心的朋友就會發(fā)現(xiàn)代碼里面并沒有換行指令為什么運行的結(jié)果會自動換行?

getchardu讀取字符的時候真的是在鍵盤上讀取的嗎? getchar 緩沖區(qū) 鍵盤 其實在getchar和鍵盤之間有個緩沖區(qū),在緩沖區(qū)是空 的時候,getchar就會等待鍵盤輸入字符,當用戶輸入 A時其實多輸入了一個回車,這是緩沖區(qū)里面就有A\n getchar首先讀取了A然后輸出,然后又上去讀取了\n 再輸出\n就達到了換行的效果,所以B會在第三行輸入

三、getchar的讀取規(guī)則

講了這么多可能很多人都不明白這么一個代碼有什么用呢?其實在很多地方都會用到,比如模擬用戶登入場景。但是寫這個代碼的時候就要注意getchar的讀取規(guī)則
代碼如下(示例)

#include<stdio.h> int main() {char password[20] = { 0 };printf("請輸入密碼:>");scanf("%s", password);printf("請確認密碼(Y/N):>");int ch = getchar();if (ch == 'Y'){printf("確認成功");}else{printf("確認失敗");}return 0; }

代碼運行結(jié)果

在這里我們看到都還沒確認就直接輸出確認失敗,到這里大家應該都明白了是什么問題吧?沒錯就是\n的問題,這里getchar發(fā)現(xiàn)緩沖區(qū)里面還有一個\n就沒等我們輸入直接把\n讀走
那應該如何解決呢?
代碼如下(示例)

#include<stdio.h> int main() {char password[20] = { 0 };printf("請輸入密碼:>");scanf("%s", password);getchar();printf("請確認密碼(Y/N):>");int ch = getchar();if (ch == 'Y'){printf("確認成功");}else{printf("確認失敗");}return 0; }

代碼運行結(jié)果

接下來我們再想大家思考一個問題,當密碼里面有空格的時候還會確認成功嗎?

沒錯還是會失敗,這又是為什么呢?因為數(shù)組把空格前面的123456讀走了,但是緩沖區(qū)里還剩下空格abcdef\n所以getchar還是會讀取緩沖區(qū)里面的東西
那該怎么解決呢?
代碼如下(示例)

int main() {char password[20] = { 0 };printf("請輸入密碼:>");scanf("%s", password);int temp = 0;while((temp=getchar())!='\n');{;}printf("請確認密碼(Y/N):>");int ch = getchar();if (ch == 'Y'){printf("確認成功");}else{printf("確認失敗");}return 0; }

代碼運行結(jié)果


總結(jié)

從上面我們學習到了getchar,發(fā)現(xiàn)其實getchar的使用很簡單就是讀取字符,但是難的是它的讀取字符是的規(guī)則,所以我們在使用getchar的時候一定要慎重思考它的讀取規(guī)則。

總結(jié)

以上是生活随笔為你收集整理的【getchar】在C语言中getchar的使用方法和读取规则的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。