C语言中大小写字母的转化
目录
C语言中大小写字母的转化
一、引言
二、C语言中的大小写转换函数
toupper()函数
tolower()函数
三、注意事项
四、总结
C语言中大小写字母的转化
一、引言
在C语言编程中,字符的处理是一个重要的环节。字符包括字母、数字、标点符号等,其中字母又分为大写和小写。在某些应用场景中,我们需要对字母的大小写进行转换,比如用户输入的密码需要全部转换为大写或小写以确保安全,或者在进行字符串比较时,需要忽略大小写以实现不区分大小写的匹配。
C语言标准库中提供了用于大小写转换的函数,使得这一操作变得简单而高效。本文将详细介绍如何在C语言中进行大小写字母的转换,包括相关的函数和示例代码。
二、C语言中的大小写转换函数
toupper()函数
toupper()函数是C语言标准库中的一个函数,用于将小写字母转换为大写字母。
其函数原型:int toupper(int c);
toupper()函数接受一个整数参数c,表示要转换的字符。如果c是一个小写字母,则函数返回对应的大写字母;如果c不是小写字母,则函数返回c`本身。返回值是一个整数,表示转换后的字符。
示例代码:
#include <stdio.h>
#include <ctype.h> int main() { char str[] = "Hello, World!"; int i = 0; while (str[i]) { str[i] = toupper(str[i]); i++; } printf("%s\n", str); // 输出:HELLO, WORLD! return 0;
}
tolower()函数
tolower()函数与toupper()函数类似,用于将大写字母转换为小写字母。
其函数原型:int tolower(int c);
tolower()函数接受一个整数参数c,表示要转换的字符。如果c是一个大写字母,则函数返回对应的小写字母;如果c不是大写字母,则函数返回c`本身。返回值是一个整数,表示转换后的字符。
示例代码:
#include <stdio.h>
#include <ctype.h> int main() { char str[] = "HELLO, WORLD!"; int i = 0; while (str[i]) { str[i] = tolower(str[i]); i++; } printf("%s\n", str); // 输出:hello, world! return 0;
}
三、注意事项
在使用toupper()和tolower()函数时,需要注意以下几点:
- 函数参数是字符的ASCII码值,因此既可以传递字符变量,也可以传递字符常量。
- 如果传递给函数的参数不是字母,则函数将返回该参数本身。这意味着这两个函数不会对非字母字符产生任何影响。
- 由于
toupper()和tolower()函数是C语言标准库中的函数,因此在使用它们之前需要包含头文件<ctype.h>。
除了toupper()和tolower()函数外,C语言标准库中还提供了其他一些用于字符和字符串处理的函数,但并没有直接提供类似Python中title()这样的函数来将每个单词的首字母转换为大写。不过,我们可以通过组合使用C语言中的函数和循环结构来实现类似的功能。
下面是一个简单的示例,展示了如何使用C语言将字符串中每个单词的首字母转换为大写:
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <stdbool.h> void toTitleCase(char *str) { bool nextUpper = true; // 标记下一个字符是否为大写 for (int i = 0; str[i] != '\0'; i++) { // 如果是空格,则下一个字符应该是大写 if (str[i] == ' ') { nextUpper = true; } else if (isalpha(str[i])) { // 如果是字母且需要转换为大写,则使用toupper() if (nextUpper) { str[i] = toupper(str[i]); nextUpper = false; // 设置下一个字符不需要转换为大写 } } }
} int main() { char str[] = "hello, world!"; toTitleCase(str); printf("%s\n", str); // 输出:Hello, World! return 0;
}
再来实现一个大小写互换的函数 swapCase(),遍历输入字符串中的每个字符,检查它是否是一个字母,然后使用toupper()或tolower()函数来转换它的大小写。
#include <stdio.h>
#include <ctype.h>
#include <string.h> void swapCase(char *str) { for (int i = 0; str[i] != '\0'; i++) { if (isalpha(str[i])) { // 检查字符是否为字母 str[i] = isupper(str[i]) ? tolower(str[i]) : toupper(str[i]); // 如果是大写字母,转换为小写;如果是小写字母,转换为大写 } }
} int main() { char str[] = "Hello, World!"; printf("Original string: %s\n", str); swapCase(str); printf("Swapped case string: %s\n", str); return 0;
}
在这个swapCase函数中,我们使用isalpha()函数来检查每个字符是否为字母。如果是字母,我们再用isupper()函数来检查它是否为大写字母。如果是大写字母,我们就用tolower()函数将其转换为小写;如果是小写字母,我们就用toupper()函数将其转换为大写。这样,我们就实现了大小写字母的互换。
当你运行上面的程序时,它会输出原始字符串和大小写互换后的字符串。在这个例子中,原始字符串"Hello, World!"会被转换为"hELLO, wORLD!"。
请注意,这个函数会直接修改传入的字符串,因此如果你不想修改原始字符串,你需要先复制一份字符串,然后对复制后的字符串进行操作。此外,这个函数假设输入字符串是有效的,并且不包含任何非字母字符。在实际应用中,你可能需要添加额外的错误检查和处理逻辑来确保函数的健壮性。
四、总结
本文介绍了在C语言中进行大小写字母转换的方法,包括使用toupper()和tolower()函数。这两个函数简单易用,可以帮助我们快速实现大小写转换的需求。在实际编程中,我们可以根据具体的需求选择使用哪个函数,以实现大小写字母的灵活处理。
除了大小写转换,C语言还提供了其他丰富的字符处理函数,如isdigit()用于判断字符是否为数字,isalpha()用于判断字符是否为字母等。这些函数为字符处理提供了强大的支持,使得C语言在字符串和文本处理方面具有很高的灵活性和效率。
掌握这些字符处理函数,对于提升C语言编程能力具有重要意义。希望本文能够帮助读者更好地理解和应用C语言中的大小写转换函数,为实际编程工作提供便利。
相关文章:
C语言中大小写字母的转化
目录 C语言中大小写字母的转化 一、引言 二、C语言中的大小写转换函数 toupper()函数 tolower()函数 三、注意事项 四、总结 C语言中大小写字母的转化 一、引言 在C语言编程中,字符的处理是一个重要的环节。字符包括字母、数字、标点符号等,其中…...
Camunda7.18流程引擎启动出现Table ‘camunda_platform_docker.ACT_GE_PROPERTY‘的解决方案
文章目录 1、问题描述2、原因分析3、解决方案3.1、方案一:降低mysql版本3.2、方案二:增加nullCatalogMeansCurrent参数(推荐) 4、总结 1、问题描述 需要在docker中,部署Camunda流程引擎。通过启动脚本camunda-platfor…...
红队打靶:DR4G0N B4LL打靶思路详解(vulnhub)
目录 写在开头 第一步:主机发现 第二步:Web渗透 第三步:curl批量访问(无果) 第四步:Vulnhub目录发现 第五步: 图片隐写破解 第六步:ssh私钥登录 第七步:变量劫持提…...
SQL Server添加用户登录
我们可以模拟一下让这个数据库可以给其它人使用 1、在计算机中添加一个新用户TeacherWang 2、在Sql Server中添加该计算机用户的登录权限 exec sp_grantlogin LAPTOP-61GDB2Q7\TeacherWang -- 之后这个计算机用户也可以登录数据库了 3、添加数据库的登录用户和密码࿰…...
pytest如何在类的方法之间共享变量?
在pytest中,setup_class是一个特殊的方法,它用于在类级别的测试开始之前设置一些初始化的状态。这个方法会在类中的任何测试方法执行之前只运行一次。 当你在setup_class中使用self来修改类属性时,你实际上是在修改类的一个实例属性。在Pyth…...
配置前端项目到 github-pages
Quickstart for GitHub Pages - GitHub Docs...
VSCode使用教程
文章目录 VSCode简介VSCode下载安装配置语言环境CJavaPython VSCode偏好配置中文配置界面颜色字体大小快捷键 个人常规喜好 VSCode简介 VSCode(全称:Visual Studio Code)是一款由微软开发且跨平台的免费源代码编辑器。该软件支持语法高亮、代…...
vscode——本地配置(C和C++环境配置)(2)
vscode——本地配置(2) 配置C语言编译看看.json文件编译多个C文件C/C调试 今天我们继续来看vscode的配置,如果没看过上一次的文章,大家可以点击: https://blog.csdn.net/qq_67693066/article/details/136315696 配置C语…...
【从零开始学习重要知识点 | 第一篇】快速了解什么是幂等性以及常见解决方案
前言: 当我们在设计和实现分布式系统时,幂等性是一个非常重要的概念。幂等性可以简单地理解为:对于同一操作,不论执行多少次,产生的影响都是相同的。这个概念在分布式系统中非常重要,因为在这种环境下&…...
Jvm之内存泄漏
1 内存溢出 1.1 概念 java.lang.OutOfMemoryError,是指程序在申请内存时,没有足够的内存空间供其使用,出现OutOfMemoryError。产生该错误的原因主要包括:JVM内存过小。程序不严密,产生了过多的垃圾。 程序体现: 内…...
尚硅谷webpack5笔记2
Loader 原理 loader 概念 帮助 webpack 将不同类型的文件转换为 webpack 可识别的模块。 loader 执行顺序 分类pre: 前置 loadernormal: 普通 loaderinline: 内联 loaderpost: 后置 loader执行顺序4 类 loader 的执行优级为:pre > normal > inline > post 。相…...
笔记本Win 10系统查看电池健康状况
博主最近换了个笔记本电池,之前的电池容量明显变小了很多,而且出现了轻微鼓包的情况。所以用gpt问了一下怎么用系统的方法查看电池情况。 在Windows 10系统中,您可以通过以下步骤来查看笔记本电脑电池的健康状况: 打开命令提示符&…...
算法--动态规划(线性DP、区间DP)
这里写目录标题 tip数组下标从0开始还是从1开始 数学三角形介绍算法思想例题代码 最长上升子序列介绍算法思想例题代码 最长公共子序列介绍算法思想例题代码 tip 数组下标从0开始还是从1开始 如果代码中涉及到数组下标为i-1(有时候哪怕不是同一个数组也符合情况&am…...
【ArcGIS】统计格网中不同土地利用类型占比
基于ArcGIS统计格网中不同土地利用类型占比 数据准备ArcGIS操作步骤1、创建渔网(Create Fishnet)2、建立唯一标识3、选择格网4、提取不同类别土地利用类型5、各类用地面积计算 参考另:可能出现的问题总结Q1:ArcGIS获取唯一值&…...
算法竞赛实用板子
一、声明 自用版参考acwing,致力于实用、好用,板子中有个人理解,持续更新。 二、开板 1.快排 void quick_sort(int q[],int l,int r) {if(l>r)return; //出口int il-1,jr1,xq[lr>>1]; //分治方法while(i<j){do i;w…...
RPA中国 x UiPath | 第六届RPA极客挑战赛,3月16日上海开赛!
随着人工智能技术的不断进步以及数字化转型的深入,企业对于高效、精准、自动化的业务流程需求日益迫切。RPA技术作为连接人类工作与机器操作的桥梁,正逐渐从规则驱动发展为智能决策的助手。 由RPA中国联合UiPath共同主办的【第六届RPA极客挑战赛】将于2…...
算法打卡day5|哈希表篇01|Leetcode 242.有效的字母异位词 、19.删除链表的倒数第N个节点、202. 快乐数、1. 两数之和
哈希表基础知识 哈希表 哈希表关键码就是数组的索引下标,然后通过下标直接访问数组中的元素;数组就是哈希表的一种 一般哈希表都是用来快速判断一个元素是否出现集合里。例如要查询一个名字是否在班级里: 要枚举的话时间复杂度是O(n)&…...
『python爬虫』xpath变化导致无法找到指定元素(持续更新中~)
目录 xpath变化的原因1. 语言设置2. 窗口大小n. 待添加~总结 欢迎关注 『python爬虫』 专栏,持续更新中 欢迎关注 『python爬虫』 专栏,持续更新中 xpath变化的原因 XPath 可能会出现变化的原因有很多,以下是一些常见的情况: 网页…...
人大金仓数据库Kingbase服务SQL基础操作手册
1 kingbase服务 1.1 查看kingbase数据库服务进程 ps -ef|grep kingbase1.2 命令启动kingbase数据库服务 # /opt/Kingbase/ES/V8 为金仓安装目录 # /opt/Kingbase/ES/V8/data 为金仓数据目录 # sys_ctl是数据库服务器启停命令,通过-D选项来来指定数据库数据目录 #…...
赎金信00
题目链接 赎金信 题目描述 注意点 magazine中的每个字符只能在ransomNote中使用一次ransomNote和magazine由小写英文字母组成 解答思路 因为ransomNote和magazine由小写英文字母组成,所以使用大小为26的数组存储magazine中a~z对应出现的次数,ransom…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...
【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...
