最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言中g(shù)etchar()與putchar()函數(shù)詳解

 更新時(shí)間:2023年01月08日 09:43:32   作者:Jambo!  
本文主要介紹了C語言中g(shù)etchar()與putchar()函數(shù)詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

getchar()與putchar()getchar()getchar()的一個(gè)重要機(jī)制getchar()與scanf()區(qū)別 putchar() 實(shí)例1.清空緩沖區(qū)2.字符串中有空格

getchar()與putchar()

getcharputchar其實(shí)最基本的作用就是用getchar讀取一個(gè)字符,再用putchar輸出一個(gè)字符

基本用法:

#include <stdio.h>

int main()
{
	char c = 0;
	c = getchar();
	putchar(c);
	return 0;
}

運(yùn)行結(jié)果:

在這里插入圖片描述

輸入一個(gè)a,然后再打印a

這里getcharputcharscanfprintf的作用基本一致,只不過getchar,putchar只對(duì)字符類型操作,而scanf,printf對(duì)指定的類型進(jìn)行操作

getchar()

getchar的定義:
int getchar(void)

  • 返回類型是int值,所以返回的是字符的ASCII碼
  • 參數(shù)列表中是void,所以不必在括號(hào)中傳參數(shù)
  • 如果getchar讀取失敗,就會(huì)返回EOF

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

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

在這里插入圖片描述

因?yàn)?code>getchar是對(duì)于字符進(jìn)行操作,所以每次執(zhí)行getchar都會(huì)取走輸入緩沖區(qū)中一個(gè)字符
并且getchar還會(huì)取走回車也就是\n與空格

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

int main()
{
	char ch = 0;
	while ((ch = getchar()) != EOF)
	{
		putchar(ch);
	}
	return 0;
}

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

在這里插入圖片描述

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

在這里插入圖片描述

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

在這里插入圖片描述

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

還可以用以下代碼更進(jìn)一步驗(yàn)證getchar()對(duì)于回車的讀取:

int main()
{
	int i = 0;
	char ch = 0;
	while ((ch = getchar()) != EOF)
	{
		putchar(ch);
		i++;
	}
	printf("%d", i);
	return 0;
}

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

在這里插入圖片描述

getchar()與scanf()區(qū)別

*getcharscanf的主要區(qū)別是getchar能讀取輸入緩沖區(qū)中的一切字符類型,包括空格與回車,而scanf()不能讀取空格與回車

putchar()

putchar的定義:

int putchar ( int character );
  • 傳的參數(shù)是要輸出的字符變量
  • putchar的用法與printf("%c",character)一致,都是輸出一個(gè)字符

實(shí)例

1.清空緩沖區(qū)

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

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

我們輸入一端密碼后,還未輸入Y或N,代碼就自動(dòng)打印“失敗”并退出運(yùn)行

在這里插入圖片描述

這其實(shí)還是scamf無法讀取回車在作祟
當(dāng)我們輸入1234567后,此時(shí)在輸入緩沖區(qū)中其實(shí)存的是:1234567\n

請(qǐng)?zhí)砑訄D片描述

scanf("%s", password);語句讀取字符串,因?yàn)樗鼰o法讀取\n所以此時(shí)scanf只會(huì)讀取走1234567,在輸入緩沖區(qū)中還有\n

請(qǐng)?zhí)砑訄D片描述

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

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

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

代碼如下:

int main()
{
	char password[20] = { 0 };
	int ch = 0;
	printf("輸入密碼\n");
	scanf("%s", password);
	printf("請(qǐng)確認(rèn)密碼(Y/N):");
	getchar();   //清空緩沖區(qū)
	ch = getchar();
	if (ch == 'Y')
	{
		printf("成功\n");
	}
	else
	{
		printf("失敗\n");
	}
	return 0;
}

運(yùn)行成功

在這里插入圖片描述

2.字符串中有空格

以下代碼是輸入一個(gè)字符串再輸出:

int main()
{
	char str[20] = { 0 };
	scanf("%s", str);
	printf("%s", str);
	return 0;
}

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

在這里插入圖片描述

如果輸入的字符串是有字符的,就會(huì)出現(xiàn)錯(cuò)誤

在這里插入圖片描述

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

因?yàn)檩斎氲囊欢巫址欢〞?huì)是以\n為結(jié)尾

在這里插入圖片描述

所以在前面的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;
}

運(yùn)行結(jié)果:

在這里插入圖片描述

請(qǐng)?zhí)砑訄D片描述

 到此這篇關(guān)于C語言中g(shù)etchar()與putchar()函數(shù)詳解的文章就介紹到這了,更多相關(guān)C語言 getchar()與putchar()內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言繪制雷達(dá)圖的示例代碼

    C語言繪制雷達(dá)圖的示例代碼

    常用的統(tǒng)計(jì)圖有條形圖、柱形圖、折線圖、曲線圖、餅圖、環(huán)形圖、扇形圖,其中還有一種雷達(dá)圖的繪制也較難,本文為大家提供了雷達(dá)圖的繪制方法,需要的可以參考下
    2024-02-02
  • C++實(shí)現(xiàn)簡(jiǎn)易通訊錄功能

    C++實(shí)現(xiàn)簡(jiǎn)易通訊錄功能

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)簡(jiǎn)易通訊錄功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C語言實(shí)現(xiàn)動(dòng)態(tài)愛心代碼

    C語言實(shí)現(xiàn)動(dòng)態(tài)愛心代碼

    這篇文章主要為大家詳細(xì)介紹了如何通過C語言實(shí)現(xiàn)動(dòng)態(tài)愛心的效果,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,還不快跟隨小編一起get李峋同款愛心代碼
    2022-11-11
  • 盤點(diǎn)分析C語言中少見卻強(qiáng)大的字符串函數(shù)

    盤點(diǎn)分析C語言中少見卻強(qiáng)大的字符串函數(shù)

    這篇文章主要為大家盤點(diǎn)及分析C語言中少見卻強(qiáng)大的字符串函數(shù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-02-02
  • C++可變參數(shù)模板深入深剖

    C++可變參數(shù)模板深入深剖

    個(gè)可變參數(shù)模板(variadic template)就是一個(gè)接受可變數(shù)目參數(shù)的函數(shù)模板或類模板,下面這篇文章主要給大家介紹了關(guān)于C++可變參數(shù)模板的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-10-10
  • 帶你了解C語言的數(shù)據(jù)的存儲(chǔ)

    帶你了解C語言的數(shù)據(jù)的存儲(chǔ)

    這篇文章主要為大家詳細(xì)介紹了C語言的數(shù)據(jù)的存儲(chǔ),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能給你帶來幫助
    2021-08-08
  • 排序算法模板實(shí)現(xiàn)示例分享

    排序算法模板實(shí)現(xiàn)示例分享

    這篇文章主要介紹了排序算法模板實(shí)現(xiàn)示例,需要的朋友可以參考下
    2014-03-03
  • C語言實(shí)現(xiàn)推箱子項(xiàng)目

    C語言實(shí)現(xiàn)推箱子項(xiàng)目

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)推箱子項(xiàng)目,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • C語言實(shí)現(xiàn)折半查找法(二分法)

    C語言實(shí)現(xiàn)折半查找法(二分法)

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)折半查找法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • QT中對(duì)話框的使用示例詳解

    QT中對(duì)話框的使用示例詳解

    這篇文章主要為大家詳細(xì)介紹了Qt中對(duì)話框的使用,以及QMessageBox類中常見函數(shù)的使用,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以學(xué)習(xí)一下
    2022-11-11

最新評(píng)論

镶黄旗| 奉贤区| 彰武县| 临城县| 宁南县| 嘉祥县| 天镇县| 广丰县| 哈尔滨市| 饶平县| 益阳市| 陆河县| 改则县| 清涧县| 民和| 汝阳县| 邓州市| 建平县| 焉耆| 靖州| 元朗区| 蕉岭县| 肥城市| 柏乡县| 仁化县| 淮南市| 乐东| 津市市| 阿拉善左旗| 石棉县| 武清区| 蒙山县| 磐安县| 尖扎县| 长丰县| 会泽县| 栾城县| 阿拉善右旗| 新民市| 洛宁县| 德格县|