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

在C語言中g(shù)etchar的使用方法和讀取規(guī)則講解

 更新時(shí)間:2022年12月07日 08:56:02   作者:(unstoppable)  
getchar中文意思是獲取字符,getchar函數(shù)從標(biāo)準(zhǔn)輸入輸出里讀取下一個(gè)字符,返回類型為int整形,返回用戶輸入的ASCII碼值,如果到達(dá)文件末尾或者出錯返回EOF,這篇文章主要介紹了在C語言中g(shù)etchar的使用方法和讀取規(guī)則,需要的朋友可以參考下

前言

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

一、getchar是什么?

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

注意事項(xiàng)
1.這里的EOF并不是輸入EOF循環(huán)結(jié)束
2.EOF的真實(shí)值是-1
3.這里的Ctrl+z的效果便是EOF

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

在這里插入圖片描述

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

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

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

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

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

代碼運(yùn)行結(jié)果

在這里插入圖片描述

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

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

代碼運(yùn)行結(jié)果

在這里插入圖片描述

接下來我們再想大家思考一個(gè)問題,當(dāng)密碼里面有空格的時(shí)候還會確認(rèn)成功嗎?

在這里插入圖片描述

沒錯還是會失敗,這又是為什么呢?因?yàn)閿?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("請確認(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的使用很簡單就是讀取字符,但是難的是它的讀取字符是的規(guī)則,所以我們在使用getchar的時(shí)候一定要慎重思考它的讀取規(guī)則。

到此這篇關(guān)于在C語言中g(shù)etchar的使用方法和讀取規(guī)則的文章就介紹到這了,更多相關(guān)C語言getchar的使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

新津县| 奉新县| 长治市| 和林格尔县| 宁晋县| 馆陶县| 三亚市| 文水县| 邵东县| 科技| 饶河县| 兴宁市| 银川市| 方山县| 军事| 玉溪市| 建水县| 贵南县| 社会| 贵州省| 曲水县| 阿合奇县| 东光县| 安平县| 大竹县| 衡山县| 保定市| 祁阳县| 武城县| 洞头县| 舒兰市| 特克斯县| 江西省| 交口县| 淅川县| 潍坊市| 陈巴尔虎旗| 合阳县| 正安县| 杭州市| 洛浦县|