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

发布于:2022-11-27 ⋅ 阅读:(363) ⋅ 点赞:(0)

目录

引子:​

定义:

工作原理:

运用场景举例:

关于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 —— 打印地址

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

结语:

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

 

 

 

 

 

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到