最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
【getchar】在C語(yǔ)言中g(shù)etchar的使用方法和讀取規(guī)則-創(chuàng)新互聯(lián)
文章目錄
  • 前言
  • 一、getchar是什么?
  • 二、getchar的使用方法
    • 1.只獲取一次(字符/字符串)的代碼樣例
    • 2.循環(huán)獲取(字符/字符串)的代碼樣例
  • 三、getchar的讀取規(guī)則
  • 總結(jié)

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供容縣網(wǎng)站建設(shè)、容縣做網(wǎng)站、容縣網(wǎng)站設(shè)計(jì)、容縣網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、容縣企業(yè)網(wǎng)站模板建站服務(wù),10余年容縣做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
前言

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


一、getchar是什么?

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

二、getchar的使用方法 1.只獲取一次(字符/字符串)的代碼樣例

代碼如下(示例):

#includeint main()
{int ch = getchar();
	putchar(ch);
	return 0;
}

代碼執(zhí)行結(jié)果
在這里插入圖片描述

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

代碼如下(示例):

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

代碼執(zhí)行結(jié)果
在這里插入圖片描述
到這里有些細(xì)心的朋友就會(huì)發(fā)現(xiàn)代碼里面并沒(méi)有換行指令為什么運(yùn)行的結(jié)果會(huì)自動(dòng)換行?

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

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

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

代碼運(yùn)行結(jié)果
在這里插入圖片描述
在這里我們看到都還沒(méi)確認(rèn)就直接輸出確認(rèn)失敗,到這里大家應(yīng)該都明白了是什么問(wèn)題吧?沒(méi)錯(cuò)就是\n的問(wèn)題,這里getchar發(fā)現(xiàn)緩沖區(qū)里面還有一個(gè)\n就沒(méi)等我們輸入直接把\n讀走
那應(yīng)該如何解決呢?
代碼如下(示例)

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

代碼運(yùn)行結(jié)果
在這里插入圖片描述
接下來(lái)我們?cè)傧氪蠹宜伎家粋€(gè)問(wèn)題,當(dāng)密碼里面有空格的時(shí)候還會(huì)確認(rèn)成功嗎?
在這里插入圖片描述
沒(méi)錯(cuò)還是會(huì)失敗,這又是為什么呢?因?yàn)閿?shù)組把空格前面的123456讀走了,但是緩沖區(qū)里還剩下空格abcdef\n所以getchar還是會(huì)讀取緩沖區(qū)里面的東西
那該怎么解決呢?
代碼如下(示例)

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

代碼運(yùn)行結(jié)果
在這里插入圖片描述


總結(jié)

從上面我們學(xué)習(xí)到了getchar,發(fā)現(xiàn)其實(shí)getchar的使用很簡(jiǎn)單就是讀取字符,但是難的是它的讀取字符是的規(guī)則,所以我們?cè)谑褂胓etchar的時(shí)候一定要慎重思考它的讀取規(guī)則。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧


本文名稱:【getchar】在C語(yǔ)言中g(shù)etchar的使用方法和讀取規(guī)則-創(chuàng)新互聯(lián)
地址分享:http://fisionsoft.com.cn/article/dshiss.html