C语言 | getchar函数的使用

前言

getchar()是stdio.h中的库函数,它的作用是从stdin(缓冲区)中读入一个字符,返回的是ASCII码,因此,只要是ASCII表里有的,它都能


思想 

在使用scanf读取键盘输入时,并不是直接读取键盘上我们输入了什么,而是从stdin里读取,而scanf 在stdin里遇到以下情况时停止读取:
        (1)遇空格、“回车”、“跳格”键;
        (2)遇宽度结束;
        (3)遇非法输入;

那么,如果需要将 "\n"等字符输入进字符串中,可用getchar函数,逐个识别缓冲区的内容,再将其写入字符串数组中。
若再连续使用scanf函数时,为了不影响下一次输入的内容的识别,可以使用循环,循环内多次使用getchar函数将缓冲区里的 "\n" 以及不需要的内容进行清除。


实例

模拟用户设定密码时的场景,输入密码,之后输入 Y/N 确定是否设定密码。

#include <stdio.h>

int main()
{
	int password = 0;
	printf("请输入密码:");
	scanf("%d",&password);

	//定义一个tmp来存储缓冲区里的内容,起到清除缓冲区内容的作用
	int tmp = 0;			// 因为 getchar() 返回的是 ASCII 码,故用int类型的变量来存储
	while ((tmp = getchar()) != '\n') 
	{
		;
	}
	//当while 条件满足时,代表缓冲区里还有内容,继续清理;
	//当while条件不满足时,则表示清理到剩下"\n",而缓冲区里最后一个内容"\n" 则在运行条件时,被变量tmp带走了

	printf("请确认密码(Y/N):");
	int ch = getchar();		// 因为 getchar() 返回的是 ASCII 码,故用int类型的变量来存储
	if (ch == 'Y')			//用'Y' 而不是 "Y" 是因为 getchar 返回的是 int 类型

		printf("确认成功\n");
	else
		printf("确认失败\n");


	return 0;
}

 

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

福楠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值