当前位置: 首页 > news >正文

【C语言输入输出函数应用】

掌握C语言输入输出函数:printfscanfputsputchar()getchar() 的灵活应用

在C语言的学习过程中,输入输出函数是最早接触的基础模块之一。其中,printfscanf 用于格式化输出和输入,而 putsputchar()getchar() 则提供了更简单的字符输入输出方式。本文将通过代码实例和一个趣味加密练习,带你灵活掌握这些函数的使用方式。


一、基础演示:字符变量与格式化输出

#include<stdio.h>int main() {char a = 'a';char b = 'b';char A = 'A';char B = 'B';printf("%c%c%c%c\n", a, b, A, B);printf("a=%d, b=%d, A=%d, B=%d\n", a, b, A, B);return 0;
}

输出结果:

abAB
a=97, b=98, A=65, B=66

我们看到:

  • %c 用于字符输出;
  • %d 显示字符对应的ASCII整数值;
  • 字母在ASCII中的顺序是连续的,因此 azAZ 都可以用整数偏移实现加减。

二、获取用户输入并转换大小写

#include<stdio.h>int main() {char a, b;puts("请输入一个大写字母:");scanf("%c", &a);b = a + 32; // 利用ASCII差值转为小写printf("小写字母为:%c\n", b);return 0;
}

说明:

  • puts() 适合输出字符串并自动换行;
  • scanf("%c", &a) 读取一个字符;
  • a + 32 的做法依赖于ASCII表中,大写字母和小写字母之间的偏移是32(例如 ‘A’ 是65,‘a’ 是97);
  • 这是一个非常经典的大小写转换技巧。

三、深入理解 getchar()putchar()

getchar() 用于接收一个字符输入,putchar() 输出一个字符。看下面的示例:

#include <stdio.h>int main() {char ch;getchar(); // 清除前面 scanf 残留的换行符printf("请输入一个大写字母用于转换:");ch = getchar(); // 获取一个字符putchar(ch + 32); // 输出转换后的字符(小写)return 0;
}

注意点:

  • 如果在使用 scanf 之后立刻用 getchar(),会读入一个换行符 \n
  • 因此通常在 getchar() 前加一个额外的 getchar() 来“吸收”前一个输入后的回车;
  • putchar() 可直接输出一个字符,不需要格式控制。

四、趣味练习:对单词 “China” 进行加密

加密规则很简单:每个字母用它后面第4个字母替换。这个过程利用了ASCII字符偏移的原理。

#include <stdio.h>int main() {char c1 = 'C' + 4;char c2 = 'h' + 4;char c3 = 'i' + 4;char c4 = 'n' + 4;char c5 = 'a' + 4;putchar(c1);putchar(c2);putchar(c3);putchar(c4);putchar(c5);printf("\n");printf("%c%c%c%c%c\n", c1, c2, c3, c4, c5);return 0;
}

输出结果:

Glmre
Glmre

加密过程解析:

原字母ASCII加4后字符加密结果
C6771 (G)G
h104108 (l)l
i105109 (m)m
n110114 ®r
a97101 (e)e

使用 putchar()printf() 两种方式输出,效果一致,但演示了两种不同的输出方式。


五、小结

本文通过多个小示例,帮助大家掌握以下知识点:

  • printfscanf 是格式化输入输出的基础;
  • putsputchar()getchar() 是更简洁的字符/字符串处理工具;
  • 利用ASCII值可以方便地进行字符变换,例如大小写转换、加密等;
  • 实战案例“China 加密”为学习提供了直观、可操作的应用场景。

掌握这些基本技能之后,你就可以更自信地在C语言中处理输入输出任务啦!


http://www.xdnf.cn/news/390961.html

相关文章:

  • JVM——Java字节码基础
  • ElasticSearch入门详解
  • 【计算机网络】网络IP层
  • 游戏:仙剑奇侠传游戏开发代码(谢苏)
  • 数据库事务Transaction
  • 【前端】【css】【总复习】三万字详解CSS 知识体系
  • ActiveMQ 生产环境问题排查与调优指南(二)
  • 如何实现Flask应用程序的安全性
  • BuildAdmin-v2.3.0 发布
  • 黑马k8s(三)
  • Spring配置文件及其日志
  • RAGMCP基本原理说明和相关问题解惑
  • Wordpress头像无法加载太慢问题解决方式
  • Python多环境管理指南
  • 5月11日星期日早报简报微语报早读
  • Linux 进程等待
  • Nginx location静态文件映射配置
  • 【入门】打印字母塔
  • 如何配置光猫+路由器实现外网IP访问内部网络?
  • 嵌入式中屏幕的通信方式
  • docker安装superset实践
  • 深入理解 Linux 权限控制机制
  • 如果设置了 LimitRange ,并且同时container也设置了request/limit,哪个优先级高?
  • redis数据结构-08(SINTER、SUNION、SDIFF、SISMEMBER)
  • Linux基础io知识
  • 二叉树三大遍历-精髓(Java)
  • 代码随想录训练营第二十一天 |589.N叉数的前序遍历 590.N叉树的后序遍历
  • 【大模型】MS-SWIFT : 高效、灵活的大模型微调框架
  • 【Java EE初阶 --- 多线程(初阶)】线程安全问题
  • 【Android】cmd命令