【C语言小知识】getchar与putchar

getchar与putchar

  • getchar介绍
  • putchar介绍
  • 总结

在学习c语言阶段存在着许多要求输入数值的例子,在输入字符时,如果使用scanf()和printf()根据%c转换说明读写字符,接下来介绍一堆字符输入/输出函数:getchar()和putchar()。

getchar介绍

在这里插入图片描述

  • int getchar ( void );
  • 从流中获取字符
  • 返回标准输入的下一个字符
  • 它等效于使用 stdin 作为参数调用 getc。

getchar()函数不带有任何参数,它从输入队列中返回下一个字符。

 ch = getchar();

这条语句读取下一个字符输入,并把该字符的值赋给变量ch。

	scanf("%c", &ch);

该语句与上面的语句效果相同。

putchar介绍

在这里插入图片描述

  • int putchar ( int character );
  • 将字符写入stdout
  • 将一个字符写入标准输出
  • 它等效于使用 stdout 作为参数调用 putc

putchar()函数打印它的参数。

putchar(ch);

此语句把之前赋给ch的值作为字符打印出来。

printf("%c", ch);

该语句与上面的语句效果相同。

总结

  • 由于getchar()与putchar()俩个函数只处理字符,所有较scanf()与printf()函数更快,更加简洁。
  • 同时getchar()与putchar()不需要转换说明,因为它们只处理字符。
  • 这俩个函数通常定义在stdio.h头文件中,它们通常是预处理宏,而不是真正的函数。
#include<stdio.h>

int main()
{
	char ch;
	ch = getchar();
	while (ch != '\n')
	{
		if (ch == ' ')
		{
			putchar(ch);
		}
		else
		{
			putchar(ch + 1);
		}
		ch = getchar();
	}

	return 0;
}

在这里插入图片描述
观察这段代码,与scanf()进行比较,使用getchar()时每次迭代的末尾有一条“读取语句”。可以将读取和测试合并为一个表达式:

#include<stdio.h>

int main()
{
	char ch;
	while ((ch = getchar()) != '\n')
	{
		if (ch == ' ')
		{
			putchar(ch);
		}
		else
		{
			putchar(ch + 1);
		}
	}

	return 0;
}

这里可以很好的体现C特有的编程风格——把俩个行为合并成一个表达式。

以上执行的行为是赋值给ch和把ch的值与换行符作比较。
表达式ch=getchar()俩侧的圆括号让其称为!=运算符的左值,读取ch的值后,测试条件相当于是ch!=‘\n’。

【注意】ch=getchar()俩侧的圆括号一定需要存在,因为!=运算符的优先级比=高。

 putchar(ch + 1);

此语句可以很好的演示字符实际上是作为整数存储的,表达式ch+1中的ch被转换成int类型,然后int类型的计算结果被传递给接受一个int类型参数的putchar().

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/776737.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

圆通寄15kg30kg一般多少钱?寄大件物品怎么寄最便宜?

作为一名即将毕业的大学生&#xff0c;搬家成了我和室友们共同的难题。尤其是在寄送大件物品时&#xff0c;如何省钱、如何打包、选择哪家快递公司等问题让我们头疼不已。今天&#xff0c;我就来分享一些寄大件物品的省钱技巧以及打包方法&#xff0c;希望对大家有所帮助。 一…

HUAWEI VRRP 实验

实验要求&#xff1a;在汇聚交换机上SW1和SW2中实施VRRP以保证终端网关的高可靠性(当某一个网关设备失效时&#xff0c;其他网关设备依旧可以实现业务数据的转发。) 1.在SW1和SW2之间配置链路聚合&#xff0c;以提高带宽速度。 2.PC1 访问远端网络8.8.8.8 &#xff0c;优先走…

【数据结构】08.堆及堆的应用

一、堆的概念及结构 堆(Heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵完全二叉树的数组对象。 堆是非线性数据结构&#xff0c;相当于一维数组&#xff0c;有两个直接后继。 如果有一个关键码的集合K { k₀&#xff0c;k₁&#xff0c;k₂ &#…

课题申报书中要用的思路图(技术路线图)30张,超高清!

最近在弄课题申报书的时候&#xff0c;需要画“技术路线图”&#xff1b;和小伙伴们探讨才发现很多人居然不会画这种图&#xff0c;还有很多人在Word里面一点一点拼凑…… 我给大家收集了网上非常热门的30张“技术路线图”&#xff0c;但网上流传的都太模糊了&#xff0c;想看…

[图解]企业应用架构模式2024新译本讲解22-标识映射

1 00:00:01,080 --> 00:00:04,710 我们来看一下标识映射这个模式 2 00:00:08,030 --> 00:00:10,110 它是属于对象-关系 3 00:00:10,120 --> 00:00:11,150 行为模式 4 00:00:11,160 --> 00:00:13,890 就是说&#xff0c;在动态的时候 5 00:00:15,770 --> 00:…

【python】PyQt5可视化开发,如何设计鼠标显示的形状?

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

Python实现ABC人工蜂群优化算法优化卷积神经网络分类模型(CNN分类算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 人工蜂群算法(Artificial Bee Colony, ABC)是由Karaboga于2005年提出的一种新颖的基于群智能的全局优化…

Java 面向对象编程(OOP)的四大特征

Java 面向对象编程&#xff08;OOP&#xff09;的四大特征 1、抽象2、继承3、 封装4、多态性 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在Java编程中&#xff0c;面向对象编程&#xff08;OOP&#xff09;是一个核心概念。OOP的四大基…

红薯小眼睛接口分析与Python脚本实现

文章目录 1. 写在前面2. 接口分析3. 算法脚本实现 【&#x1f3e0;作者主页】&#xff1a;吴秋霖 【&#x1f4bc;作者介绍】&#xff1a;擅长爬虫与JS加密逆向分析&#xff01;Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Py…

【Linux】进程信号_4

文章目录 八、进程信号3. 信号的处理4. 可重入函数5. volatile 未完待续 八、进程信号 3. 信号的处理 当某个信号的处理函数被调用时&#xff0c;操作系统会自动将当前信号假如进程的信号屏蔽字当中。如果处理完该信号&#xff0c;该信号同样也会自动从信号屏蔽字中 移除。该…

内网通讯软件有哪些?

企业内部内网通讯工具是为了满足企业内部沟通和协作需求而设计的软件工具&#xff0c;其主要特点是在内网环境下进行通讯&#xff0c;以保证安全性和可控性。以下是一些常见的内网通讯软件&#xff0c;在企业内部通讯中起着重要的作用。 1. Microsoft Teams Microsoft Teams是…

【博士每天一篇文献-综述】Threats, Attacks, and Defenses in Machine Unlearning A Survey

1 介绍 年份&#xff1a;2024 作者&#xff1a;刘子耀&#xff0c;陈晨&#xff0c;南洋理工大学 期刊&#xff1a; 未发表 引用量&#xff1a;6 Liu Z, Ye H, Chen C, et al. Threats, attacks, and defenses in machine unlearning: A survey[J]. arXiv preprint arXiv:2403…

【AI】DeepStream(15):图像分割deepstream-segmentation-test源码分析

【AI】AI学习目录汇总 上一篇:【AI】DeepStream(14):图像分割deepstream-segmentation-test示例演示 1、获取GPU属性 1)获取当前使用的CUDA设备编号 int current_device = -1;cudaGetDevice(&current_device);2)

linux-5.10.110内核源码分析 - Freescale ls1012a pcie host驱动

1、dts pcie设备树 1.1、pcie设备树 pcie1: pcie3400000 {compatible "fsl,ls1012a-pcie";reg <0x00 0x03400000 0x0 0x00100000 /* controller registers */0x40 0x00000000 0x0 0x00002000>; /* configuration space */reg-names "regs", &…

STM32-I2C硬件外设

本博文建议与我上一篇I2C 通信协议​​​​​​共同理解 合成一套关于I2C软硬件体系 STM32内部集成了硬件I2C收发电路&#xff0c;可以由硬件自动执行时钟生成、起始终止条件生成、应答位收发、数据收发等功能&#xff0c;减轻CPU的负担 特点&#xff1a; 多主机功能&#x…

mac|idea导入通义灵码插件

官方教程&#xff1a;通义灵码下载安装指南_智能编码助手_AI编程_云效(Apsara Devops)-阿里云帮助中心 下载插件&#xff1a; ⇩ TONGYI Lingma - JetBrains 结果如下&#xff1a; 选择apply、ok&#xff0c;会出现弹窗&#xff0c;点击登录 可以实现&#xff1a;生成单元测…

【中项第三版】系统集成项目管理工程师 | 第 9 章 项目管理概论③ | 9.6 - 9.10

前言 第 9 章对应的内容选择题和案例分析都会进行考查&#xff0c;这一章节理论性较强&#xff0c;学习要以教材为准。本章分值预计在4-5分。 目录 9.6 项目管理过程组 9.7 项目管理原则 9.8 项目管理知识领域 9.9 价值交付系统 9.10 本章练习 9.6 项目管理过程组 项目…

2024小学生古诗文大会3个多月备考:吃透真题和知识点(持续)

根据主办方发布的方案通知&#xff0c;2024年上海市小学生古诗文大会的初赛将于10月19日&#xff08;星期六&#xff09;正式开始&#xff0c;还有3个多月的时间。那么该如何有效备考2024年小学生古诗文大会呢&#xff1f;建议围绕真题拓展知识&#xff0c;举一反三。 今天我们…

UE5 视频播放(自动播放和自动清除MediaTexture)

媒体播放器的打开时播放和媒体纹理的自动清除 。 在UE5开发视频播放时&#xff0c;遇到了闪帧的现象。合理选择这两个功能可解决。

掌握 Postman 脚本:入门指南

在探索 API 测试自动化环墁下&#xff0c;Postman 脚本显现其强大功能和灵活性&#xff0c;它不仅仅是 API 测试的工具&#xff0c;更是一个综合性的自动化平台。 Postman 脚本简介 Postman 允许用户在 API 请求生命周期中运行 JavaScript 脚本&#xff0c;这些脚本分为以下三…