快上网专注成都网站设计 成都网站制作 成都网站建设
成都网站建设公司服务热线:028-86922220

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

【getchar】在C语言中getchar的使用方法和读取规则-创新互联

文章目录
  • 前言
  • 一、getchar是什么?
  • 二、getchar的使用方法
    • 1.只获取一次(字符/字符串)的代码样例
    • 2.循环获取(字符/字符串)的代码样例
  • 三、getchar的读取规则
  • 总结

创新互联专业为企业提供容县网站建设、容县做网站、容县网站设计、容县网站制作等企业网站建设、网页设计与制作、容县企业网站模板建站服务,10余年容县做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
前言

今天为大家分享getchar在C语言中的使用


一、getchar是什么?

getchar中文意思是获取字符,getchar函数从标准输入输出里读取下一个字符,返回类型为int整形,返回用户输入的ASCII码值,如果到达文件末尾或者出错返回EOF

二、getchar的使用方法 1.只获取一次(字符/字符串)的代码样例

代码如下(示例):

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

代码执行结果
在这里插入图片描述

2.循环获取(字符/字符串)的代码样例

代码如下(示例):

#includeint main()
{int ch = 0;
	while ((ch = getchar()) != EOF)
	{putchar(ch);
	}
	return 0;
}
注意事项
1.这里的EOF并不是输入EOF循环结束
2.EOF的真实值是-1
3.这里的Ctrl+z的效果便是EOF

代码执行结果
在这里插入图片描述
到这里有些细心的朋友就会发现代码里面并没有换行指令为什么运行的结果会自动换行?

getchardu读取字符的时候真的是在键盘上读取的吗?
getchar             缓冲区              键盘
其实在getchar和键盘之间有个缓冲区,在缓冲区是空
的时候,getchar就会等待键盘输入字符,当用户输入
A时其实多输入了一个回车,这是缓冲区里面就有A\n
getchar首先读取了A然后输出,然后又上去读取了\n
再输出\n就达到了换行的效果,所以B会在第三行输入
三、getchar的读取规则

讲了这么多可能很多人都不明白这么一个代码有什么用呢?其实在很多地方都会用到,比如模拟用户登入场景。但是写这个代码的时候就要注意getchar的读取规则
代码如下(示例)

#includeint main()
{char password[20] = {0 };
	printf("请输入密码:>");
	scanf("%s", password);
	printf("请确认密码(Y/N):>");
	int ch = getchar();
	if (ch == 'Y')
	{printf("确认成功");
	}
	else
	{printf("确认失败");
	}
	return 0;
}

代码运行结果
在这里插入图片描述
在这里我们看到都还没确认就直接输出确认失败,到这里大家应该都明白了是什么问题吧?没错就是\n的问题,这里getchar发现缓冲区里面还有一个\n就没等我们输入直接把\n读走
那应该如何解决呢?
代码如下(示例)

#includeint main()
{char password[20] = {0 };
	printf("请输入密码:>");
	scanf("%s", password);
	getchar();
	printf("请确认密码(Y/N):>");
	int ch = getchar();
	if (ch == 'Y')
	{printf("确认成功");
	}
	else
	{printf("确认失败");
	}
	return 0;
}

代码运行结果
在这里插入图片描述
接下来我们再想大家思考一个问题,当密码里面有空格的时候还会确认成功吗?
在这里插入图片描述
没错还是会失败,这又是为什么呢?因为数组把空格前面的123456读走了,但是缓冲区里还剩下空格abcdef\n所以getchar还是会读取缓冲区里面的东西
那该怎么解决呢?
代码如下(示例)

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;
}

代码运行结果
在这里插入图片描述


总结

从上面我们学习到了getchar,发现其实getchar的使用很简单就是读取字符,但是难的是它的读取字符是的规则,所以我们在使用getchar的时候一定要慎重思考它的读取规则。

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


当前标题:【getchar】在C语言中getchar的使用方法和读取规则-创新互联
分享路径:http://6mz.cn/article/dshiss.html

其他资讯