亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C++中putchar與getchar函數(shù)的細節(jié)及運用

 更新時間:2021年07月27日 11:48:13   作者:Chaser Feng  
C語言提供putchar函數(shù),用于給終端輸出一個字符;getchar函數(shù),可以從終端接收用戶輸入的一個字符,本文給大家分享C++中putchar與getchar函數(shù)的細節(jié)及運用,感興趣的朋友跟隨小編一起看看吧

在C語言中,輸入和輸出除了用printf和scanf外,另外還有用于輸入字符的函數(shù)為getchar()函數(shù),用于輸出字符的函數(shù)為putchar()函數(shù)。
功能解釋如下:

在這里插入圖片描述
在這里插入圖片描述

下面用例子來說明函數(shù)的用法

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

結(jié)果:

在這里插入圖片描述

可以看出,當(dāng)按下鍵盤上的回車鍵時,getchar函數(shù)會讀取到屏幕中輸入的字符和回車字符'\n',而putchar函數(shù)會將這個字符再次打印在屏幕上并顯示出回車的效果。而當(dāng)按下鍵盤上的ctrl+z鍵的時候,就會讓getchar讀取到EOF(意味著讀取字符失?。?,此時getchar就會讀取結(jié)束。

應(yīng)用:

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

在這里插入圖片描述

整體上看并沒有什么語法上的錯誤,但為什么會出現(xiàn)上面的情況呢?這里就要重點說明一下getchar函數(shù)的讀取細節(jié)了。
如圖:

在這里插入圖片描述

首先scanf會把空格前的字符(即“12345”)都獲取,此時緩沖區(qū)中就會剩下“ (空格)avcde”,而getchar函數(shù)就會將剩下的第一個字符讀取,讀取的第一個位“(空格)”,不為“Y”,所以顯示“確認(rèn)失敗”;如何解決這一問題呢?就需要將剩下的字符都獲取完(包括“\n”,原因是當(dāng)在鍵盤上按下回車鍵時,系統(tǒng)就會默認(rèn)輸入一個“\n”),再輸入后才會讀取成功。
改進如下:

char password[20] = { 0 };
	printf("請輸入密碼:>\n");
	scanf("%s", password);
	printf("請確認(rèn)密碼<Y/N>:");
	int tmp = 0;
	//巧妙的運用循環(huán)來清理緩沖區(qū)內(nèi)的多個字符
	while ((tmp = getchar()) != '\n')//當(dāng)獲取到'\n'時,循環(huán)結(jié)束
	{
		;
	}
	int ch = getchar();
		if (ch == 'Y')
		{
			printf("確認(rèn)成功!");
		}
		else
		{
			printf("確認(rèn)失?。?);
		}

在這里插入圖片描述

此時就能按照正常的邏輯運行了。
以上就是對getchar函數(shù)一些小細節(jié)的理解,如有不當(dāng),歡迎指正!

到此這篇關(guān)于C++中putchar與getchar函數(shù)的細節(jié)及運用的文章就介紹到這了,更多相關(guān)putchar與getchar函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關(guān)文章

  • C語言中堆空間的生成與釋放詳解

    C語言中堆空間的生成與釋放詳解

    以下是對C語言中堆空間的生成與釋放進行了詳細的分析介紹,需要的朋友可以過來參考下
    2013-08-08
  • C語言實現(xiàn)圖書管理系統(tǒng)開發(fā)

    C語言實現(xiàn)圖書管理系統(tǒng)開發(fā)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)圖書管理系統(tǒng)開發(fā),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C語言?使用qsort函數(shù)來進行快速排序

    C語言?使用qsort函數(shù)來進行快速排序

    排序方法有很多種:選擇排序,冒泡排序,歸并排序,快速排序等。?看名字都知道快速排序是目前公認(rèn)的一種比較好的排序算法。因為他速度很快,所以系統(tǒng)也在庫里實現(xiàn)這個算法,便于我們的使用。?這就是qsort函數(shù)
    2022-02-02
  • 詳解C++中的數(shù)據(jù)抽象

    詳解C++中的數(shù)據(jù)抽象

    這篇文章主要介紹了詳解C++中的數(shù)據(jù)抽象,數(shù)據(jù)抽象是指,只向外界提供關(guān)鍵信息,并隱藏其后臺的實現(xiàn)細節(jié),即只表現(xiàn)必要的信息而不呈現(xiàn)細節(jié),需要的朋友可以參考下
    2023-05-05
  • C++初學(xué)者之根據(jù)輸入的任何一個正整數(shù),輸出可能被表示的連續(xù)正整數(shù)

    C++初學(xué)者之根據(jù)輸入的任何一個正整數(shù),輸出可能被表示的連續(xù)正整數(shù)

    這篇文章主要介紹了C++初學(xué)者之根據(jù)輸入的任何一個正整數(shù),輸出可能被表示的連續(xù)正整數(shù)的相關(guān)資料,需要的朋友可以參考下
    2016-03-03
  • C++結(jié)構(gòu)體與類指針知識點總結(jié)

    C++結(jié)構(gòu)體與類指針知識點總結(jié)

    在本篇文章里小編給大家整理了關(guān)于C++結(jié)構(gòu)體與類指針知識點以及相關(guān)內(nèi)容,有興趣的朋友們參考學(xué)習(xí)下。
    2019-09-09
  • 一元多項式加法運算

    一元多項式加法運算

    今天小編就為大家分享一篇關(guān)于一元多項式加法運算,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • opencv實現(xiàn)顏色檢測

    opencv實現(xiàn)顏色檢測

    這篇文章主要為大家詳細介紹了opencv實現(xiàn)顏色檢測,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • QT5交叉編譯入門級教程(arm64、mips64)

    QT5交叉編譯入門級教程(arm64、mips64)

    交叉編譯就是在當(dāng)前系統(tǒng)平臺上,開發(fā)編譯運行于其它平臺的程序,比如本文硬件環(huán)境是x86平臺,但是編譯出來的程序是在arm64架構(gòu)、mips64等架構(gòu)上運行,本文給大家分享QT5交叉編譯入門級教程(arm64、mips64),感興趣的朋友一起看看吧
    2023-11-11
  • C語言開發(fā)簡易版掃雷小游戲

    C語言開發(fā)簡易版掃雷小游戲

    本文給大家分享的是一個使用C語言開發(fā)的命令行下的簡易版掃雷小游戲,本身沒有什么太多的技術(shù)含量,只不過是筆者的處女作,所以還是推薦給大家,希望對大家學(xué)習(xí)C能夠有所幫助。
    2015-12-12

最新評論