小知识-getchar

本文详细介绍了C语言中的getchar函数,其返回字符对应的ASCII码,以及如何与putchar和while循环结合使用。同时讨论了scanf和getchar在处理密码验证时的缓存清理问题。
摘要由CSDN通过智能技术生成

了解getchar

getchar:获取字符;getchar虽然获取的是一个字符,但它返回的是int类型,即读取相应字符对应的ASCII码值。

getchar在读取过程中,文件结束或者错误的时候,会返回EOF(EOF:End Of File),即-1。

getchar的使用

int main()
{
  int ch = getchar();
  printf("%c\n", ch);
  return 0;
}

getchar读取字符所存储形式ASCII码值之后,将数值赋值给int ch,打印char ch。

此时编译运行代码之后,光标闪烁,当我们输入一个字符时,输出的是对应字符(getchar获取了对应字符的ASCII码值,但是输出是%c,字符形式,所以又返回字符)

putchar

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

 putchar:输出一个字符;putchar的作用与上一个代码中printf的作用相同。

getchar与while结合运用

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

解读代码:while循环,当getchar获取的数值不等于EOF时循环。

以上代码编译运行之后将会循环(即光标闪烁-输入数值-回车-返回数值-光标闪烁),当想结束代码时,ctrl+Z即可。

练习:尝试理解以下代码

int main()
{
	char password[20] = { 0 };
	printf("请输入密码:>");
	scanf("%s",password);//输入密码123456后,我们会回车一下,以便scanf读取输入数值;
	//屏幕显示的密码被scanf读取,但回车,即'\n'会被getchar读取,所以在int ch=getchar执行之前,
	//我们要清空缓存区。
	printf("请确认密码(Y/N):>");
	//getchar();//1.这一行代码是为了清空缓存区中的\n,但是这种做法只能清除单个字符
	int tmp = 0;
	while ((tmp = getchar()) != '\n')//当getchar获取到的字符不为\n时,循环,直至遇到\n进行下一步
	{
		;
	}//当输入密码12345 678910时,带有空格时,scanf只会读取空格前的字符,
	//所以剩下的字符需要被清空,此时引入while循环
	int ch = getchar();
	if (ch == 'Y')
		printf("确认成功");
	else
		printf("确认失败");


	return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值