C getchar & putchar函数

这篇具有很好参考价值的文章主要介绍了C getchar & putchar函数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言

1.getchar()函数

2.putchar()函数

3.清空缓冲区

3.1   缓冲区

3.2   场景

3.3   问题分析 

3.4   改进(即清空缓冲区)


前言

C语言的字符输入函数getchar和输出函数putchar功能介绍,以及缓冲区的简单认识。

1.getchar()函数

1.int getchar(void) 函数从屏幕读取下一个可用的字符,并把它返回为一个整数(返回字符的ASCII码值)。这个函数在同一个时间内只会读取一个单一的字符。您可以在循环内使用这个方法,以便从屏幕上读取多个字符。

2.读取失败or遇到文件末尾是返回EOF。

ch = getchar() 和 scanf("%c", &ch); 语句效果相同

2.putchar()函数

1.int putchar(int c) 函数把字符(或者你想返回字符对应的ASCII码值)输出到屏幕上,并返回相同的字符。这个函数在同一个时间内只会输出一个单一的字符。您可以在循环内使用这个方法,以便在屏幕上输出多个字符。

putchar(ch) 和 printf("%c", ch); 语句效果相同

3.清空缓冲区

3.1   缓冲区

1.什么是缓冲区?

用户输入的字符被收集并储存在一个被称为缓冲区的临时存储区,按下Enter键后,程序才可以使用用户输入的字符。

2.为什么要有缓冲区?

首先,把若干字符作为一个块进行传输比逐个发送这些字符节约时间;

其次,如果用户打错字符,可以直接通过键盘修正错误,当最后按下Enter键时,传输的是正确的输入。

3.2   场景

#include<stdio.h>

int main()
{
	char password[20];
	printf("请输入密码->");
	scanf("%s", password); //数组名不需要使用取地址符&
	printf("请确认Y/N:");
	int ch = getchar();
	if ('Y' == ch) {
		printf("确认成功\n");
	}
	else {
		printf("确认失败\n");
	}
	return 0;
}

输出结果:

C getchar & putchar函数,从零开始的C语言生活,c语言,开发语言

3.3   问题分析 

1.从输出结果我们可以看出:在我们输入密码之后,我们并未选择确认,程序就直接认定我们确认失败。

2.问题原因:scanf 与 getchar 都是从缓冲区中获取内容,但是关键来了:scanf函数在我们输入完毕后按下Enter键(或者是空格)后方才停止输入,此时scanf中的password拿走了密码123456,但是后面你敲的回车键转变成字符 ' \n ' ch = getchar()拿走,也就是说ch = ' \n '肯定不等于' Y ',所以直接输出确认失败

3.4   改进(即清空缓冲区)

1.由3.3分析可知,密码确认的失败主要是因为getchar读取的  ' \n ' 导致,因此,我们需要清空缓冲区,即scanf读取后缓冲区剩余字符我们需要清空。

#include<stdio.h>

int main()
{
	char password[20];
	printf("请输入密码->");
	scanf("%s", password); //数组名不需要使用取地址符&
	getchar();      //这里我又加了一个getchar(),这样\n就被去掉了
	printf("请确认Y/N:");
	int ch = getchar();
	if ('Y' == ch) {
		printf("确认成功\n");
	}
	else {
		printf("确认失败\n");
	}
	return 0;
}

2.缓冲区字符较多,如何清空?

①还是上面的代码,比如输入123456  abcd,在6后面我输入了一个空格,此时scanf只读取到6,则缓冲区还剩下abcd\n五个字符,但是getchar()一次只能去除一个,则我们需要通过循环的方式,逐步去除缓冲区中所有的剩余字符。

②代码演示:

#include<stdio.h>

int main()
{
	char password[20];
	printf("请输入密码->");
	scanf("%s", password); //数组名不需要使用取地址符&
	int ch = 0;
	while (ch = getchar() != '\n') {
		;
	}
	printf("请确认Y/N:");
	ch = getchar();
	if ('Y' == ch) {
		printf("确认成功\n");
	}
	else {
		printf("确认失败\n");
	}
	return 0;
}

运行结果:

C getchar & putchar函数,从零开始的C语言生活,c语言,开发语言

这样我们就达到了一个清空缓冲区的效果! 文章来源地址https://www.toymoban.com/news/detail-659007.html

到了这里,关于C getchar & putchar函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • getchar与putchar在C语言中的作用

    代替了scanf 和 printf 的输入输出 字符 的功能 代码并没有写入  n  ,但是结果出现了自动换行的结果,这是为什么呢? 代码可以运行,但是无法确认,getchar无法正常工作,原因是什么呢? 1.原因分析    scanf不会取 n,一旦有空格,scanf的工作就立即停止了 3.情景分析 此时说

    2024年02月08日
    浏览(37)
  • 【C语言】详解getchar和putchar的使用方法

     🎈个人主页:库库的里昂  🎐CSDN新晋作者  🎉欢迎 👍点赞✍评论⭐收藏  ✨收录专栏:C语言初阶  ✨其他专栏:代码小游戏  🤝希望作者的文章能对你有所帮助,有不足的地方请在评论区留言指正,大家一起学习交流!🤗 【 前言 】 我们知道 scanf 函数可以从键盘输入

    2024年02月14日
    浏览(38)
  • 从零开始的种田生活-Unity游戏开发

    大家好,这里是暴躁老哥酒九。最近了我们的童年记忆《摩尔庄园》在手机上面复活了,不知道大家有没有沉迷于种菜无法自拔呢(反正我是累了)。 种田才是这个游戏本质吧~ 在《摩尔庄园》中了为我们玩家提供了很多的玩法比如:钓鱼,烹饪,开餐厅,庄园和玩家自身装

    2024年02月02日
    浏览(46)
  • 从零开始的嵌入式Linux生活(一) 背景介绍

    近年来(截至2023年3月),随着各种各样的因素:实体经济、米国制裁、芯片热、智能汽车等, 嵌入式软件开发(Embedded Software)越来越火热,众多的芯片公司、应用方案公司、甚至是代理商公司如雨后春笋般成立; 各大招聘网站上“嵌入式开发”“驱动开发”等岗位也成为

    2023年04月09日
    浏览(44)
  • C语言如何使⽤ getchar()函数?

            字符数据输⼊使⽤的是 getchar()函数,那么该如何使⽤该函数呢?         getchar()函数的作⽤是从终端(输⼊设备)输⼊⼀个字符。该函数与 putchar() 函数不同之处是它没有参数。 该函数的定义如下。 使⽤ getchar()函数时也要添加头⽂件 stdio.h,函数的值就是从

    2024年02月20日
    浏览(28)
  • C语言中getchar()函数的详解

    getchar() 函数顾名思义就是获取一个字符,那么他从何处获取,返回值类型又是什么让我们在MSDN中找寻答案 我们可以看到 getchar() 函数的作用是从stdin(标准输入——键盘)获取字符,他的返回值类型是 int ,那我们不禁要问了,为什么 getchar() 读取的是一个字符而返回的却是

    2024年02月08日
    浏览(33)
  • getchar函数详解看这一篇就够了-C语言(函数功能、使用、返回值)

    首先要明确getchar的功能是:从计算机终端(一般是键盘)输入一个字符,其值就是输入得到的字符。 目录 getchar函数简介 getchar函数执行过程详解(配图)  getchar用法示例 解释一下:while ((ch=getchar()) != \\\'EOF\\\') 函数原型:int getchar(void);                                 返回

    2024年02月07日
    浏览(62)
  • C语言--getchar()函数超详细解析(多维度分析,小白一看就懂!!!)

    目录 一、前言 二、什么是getchar()函数 三、getchar()函数的返回类型与机制  四、连续单个字符串 (代码演示)  五、getchar()函数其他用法,实战演练(重点) (1)按照题目写出理想代码,but  出现了不理想的效果  (2)原因分析(原理详解) (3)解决方法  (4)再次练手

    2024年02月06日
    浏览(50)
  • 从零开始的知识图谱生活,构建一个百科知识图谱,完成基于Deepdive的知识抽取、基于ES的简单语义搜索、基于 REfO 的简单KBQA

    项目设计集合(人工智能方向):助力新人快速实战掌握技能、自主完成项目设计升级,提升自身的硬实力(不仅限NLP、知识图谱、计算机视觉等领域) :汇总有意义的项目设计集合,助力新人快速实战掌握技能,助力用户更好利用 CSDN 平台,自主完成项目设计升级,提升自

    2024年02月15日
    浏览(56)
  • 【C语言】从零开始学习数组

    💓博客主页:江池俊的博客 ⏩收录专栏:C语言初阶之路 👉其他专栏:数据结构探索 💻代码仓库:江池俊的代码仓库 🎪 社区:GeekHub社区 (欢迎大家加入与我一起探讨学习经验) 🍁 如果觉得博主的文章还不错的话,请点赞👍收藏🌟 三连支持一下博主💞 目录 一、一维数

    2024年02月15日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包