C语言——关于getchar()和putchar()函数的说明及用法

31 篇文章 2 订阅

目录

引子:​

定义:

工作原理:

运用场景举例:

关于scanf和printf :

结语:


 

引子:
c53fe4790900475b93a5dff252f9a0ce.png

我们发现用getchar()和putchar()实现了scanf和printf的功能,但是,getchar()和putchar()只是针对于字符。

定义:

查阅文档(cplusplus.com - The C++ Resources Network)如图:

getchar():

4ca141911b884521a88214bde80e76ae.png putchar():

131be7f4fc4c4a56af8c943bd6ee8274.png

大概了解了函数的定义后,我们来看下面这段代码:

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

运行结果如下:83bd35135a754ada9d6a1b3e2cfce899.png

工作原理:

下面来讲一下工作原理

getchar每次拿字符,并不是直接从键盘录入,而是键盘录入的字符,会存在一个缓存中里面,getchar在缓冲区里面一次拿一个字符

3b25dce96dc443a4a209b048cbb4130b.png 

运用场景举例:

int main()
{
	char password[10] = { 0 };
	int ch = 0;
	printf("输入密码:");
	scanf("%s", password);//数组名本来就是地址,所以不用&符号
	printf("请确认密码(Y/N):");
	ch = getchar();
	if (ch == 'Y')
		printf("确认成功\n");
	else
		printf("确认失败\n");
	return 0;
}

运行结果:32e20a7a357340f1a259df257c264bf5.png

我们发现,我们密码输入完之后,还没等我们确认,就直接确认失败了。

分析:scanf遇到空格或者回车(\n),就停止录入了,所以,拿走了密码12345,但后面的回车(\n),还在,所以getchar拿走了回车(\n),导致确认失败。

1132fc76e8724d7d970eff7e995646c7.png

我们只需要把这个回车(\n)消化掉就行,再用一个getchar就行。

77966ddc9d964976afee082409cc3139.png 

关于scanf和printf :

scanf——按照指定格式输入
printf——按照指定格式输出
 

%c —— 字符
%s —— 字符串
%d —— 整型
%f —— float浮点数
%lf —— double浮点数
%p —— 打印地址

但我们不需要深入研究,大概了解就行。

结语:

  内容就分享到这里,关于“缓冲区”,我们需要好好理解一下,看完自己再实践一下,对理解更有帮助,看到这里不妨点个赞再走,如有遗漏或者错误,还望大佬们指出,谢谢。

 

 

 

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

加法器+

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

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

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

打赏作者

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

抵扣说明:

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

余额充值