【C语言小知识】getchar与putchar

news/2024/10/5 5:53:58/

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.ppmy.cn/news/1473462.html

相关文章

深度解析:如何利用Python高效挖掘SQLite潜力

Python与SQLite共舞&#xff1a;构建高效轻量级数据库应用实战 Python&#xff0c;作为一门优雅且强大的编程语言&#xff0c;搭配轻巧灵活的SQLite数据库&#xff0c;无疑为我们提供了挥洒创意的完美画布。今天&#xff0c;咱们就通过一个鲜活的案例&#xff0c;一起探索如何…

应急响应-网站入侵篡改指南Webshell内存马查杀漏洞排查时间分析

查看146天的内存马 方法&#xff1a; 1. 日志 这种地址一般在扫描 还要注意post传参注入 对其进行全局定位 发现有sql注入 我们可以也尝试去sqlmap注入 如果以这种方式注入ua头就会改变 2. 了解自己的中间件&#xff0c;框架&#xff0c;cve&#xff0c;等 因为不知道时间…

二维码登录的原理

二维码登录的原理: 二维码登录是一种基于移动设备和网络技术的便捷登录方式。其原理主要依赖于以下几个关键要素: 随机生成:服务器端随机生成一个具有唯一性和时效性的二维码。编码信息:这个二维码包含了特定的登录信息,例如用户标识、会话标识、时间戳等。扫描识别:用户…

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

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

跨境电商入场第一步!先收集整理这些数据,看清自己该如何入场!【纯经验分享】

23年、24年确实无愧于“品牌出海元年”的称号&#xff0c;23年出海四小龙——速卖通、TikTokshop、Temu、Shein在海外的爆发让大家看到了海外市场的活动&#xff1b;而24年则有更多的国内品牌将目光瞄向了海外市场&#xff0c;年后开工到今天基本上每天都有客户来咨询出海相关的…

Flink 容错机制

一致性检查点&#xff08;checkpoint&#xff09; 什么是 Checkpoint &#xff1f; Flink 故障恢复机制的核心&#xff0c;就就是应用状态的一致性检查点&#xff1b;有状态流应用的一直检查点&#xff0c;其实就是所有任务的状态&#xff0c;在某一时间点的一份拷贝&#xff…

计算机应用数学--第三次作业

第三次作业计算题编程题1 基于降维的机器学习2 深度学习训练方法总结 第三次作业 计算题 (15 分&#xff09;对于给定矩阵 A A A&#xff08;规模为 42&#xff09;&#xff0c;求 A A A 的 SVD&#xff08;奇异值分解&#xff09;&#xff0c;即求 U U U&#xff0c; Σ …

记一次使用“try-with-resources“的语法导致的BUG

背景描述 最近使用try-catch的时候遇到了一个问题&#xff0c;背景是这样的&#xff1a;当第一次与数据库建立连接以后执行查询完毕并没有手动关闭连接&#xff0c;但是当我第二次获取连接的时候报错了&#xff0c;显示数据库连接失败&#xff0c;连接已经关闭。 org.postgres…