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

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()函数时,需要注意以下几点:

  1. 函数参数是字符的ASCII码值,因此既可以传递字符变量,也可以传递字符常量。
  2. 如果传递给函数的参数不是字母,则函数将返回该参数本身。这意味着这两个函数不会对非字母字符产生任何影响。
  3. 由于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语言编程中&#xff0c;字符的处理是一个重要的环节。字符包括字母、数字、标点符号等&#xff0c;其中…...

Camunda7.18流程引擎启动出现Table ‘camunda_platform_docker.ACT_GE_PROPERTY‘的解决方案

文章目录 1、问题描述2、原因分析3、解决方案3.1、方案一&#xff1a;降低mysql版本3.2、方案二&#xff1a;增加nullCatalogMeansCurrent参数&#xff08;推荐&#xff09; 4、总结 1、问题描述 需要在docker中&#xff0c;部署Camunda流程引擎。通过启动脚本camunda-platfor…...

红队打靶:DR4G0N B4LL打靶思路详解(vulnhub)

目录 写在开头 第一步&#xff1a;主机发现 第二步&#xff1a;Web渗透 第三步&#xff1a;curl批量访问&#xff08;无果&#xff09; 第四步&#xff1a;Vulnhub目录发现 第五步&#xff1a; 图片隐写破解 第六步&#xff1a;ssh私钥登录 第七步&#xff1a;变量劫持提…...

SQL Server添加用户登录

我们可以模拟一下让这个数据库可以给其它人使用 1、在计算机中添加一个新用户TeacherWang 2、在Sql Server中添加该计算机用户的登录权限 exec sp_grantlogin LAPTOP-61GDB2Q7\TeacherWang -- 之后这个计算机用户也可以登录数据库了 3、添加数据库的登录用户和密码&#xff0…...

pytest如何在类的方法之间共享变量?

在pytest中&#xff0c;setup_class是一个特殊的方法&#xff0c;它用于在类级别的测试开始之前设置一些初始化的状态。这个方法会在类中的任何测试方法执行之前只运行一次。 当你在setup_class中使用self来修改类属性时&#xff0c;你实际上是在修改类的一个实例属性。在Pyth…...

配置前端项目到 github-pages

Quickstart for GitHub Pages - GitHub Docs...

VSCode使用教程

文章目录 VSCode简介VSCode下载安装配置语言环境CJavaPython VSCode偏好配置中文配置界面颜色字体大小快捷键 个人常规喜好 VSCode简介 VSCode&#xff08;全称&#xff1a;Visual Studio Code&#xff09;是一款由微软开发且跨平台的免费源代码编辑器。该软件支持语法高亮、代…...

vscode——本地配置(C和C++环境配置)(2)

vscode——本地配置&#xff08;2&#xff09; 配置C语言编译看看.json文件编译多个C文件C/C调试 今天我们继续来看vscode的配置&#xff0c;如果没看过上一次的文章&#xff0c;大家可以点击&#xff1a; https://blog.csdn.net/qq_67693066/article/details/136315696 配置C语…...

【从零开始学习重要知识点 | 第一篇】快速了解什么是幂等性以及常见解决方案

前言&#xff1a; 当我们在设计和实现分布式系统时&#xff0c;幂等性是一个非常重要的概念。幂等性可以简单地理解为&#xff1a;对于同一操作&#xff0c;不论执行多少次&#xff0c;产生的影响都是相同的。这个概念在分布式系统中非常重要&#xff0c;因为在这种环境下&…...

Jvm之内存泄漏

1 内存溢出 1.1 概念 java.lang.OutOfMemoryError&#xff0c;是指程序在申请内存时&#xff0c;没有足够的内存空间供其使用&#xff0c;出现OutOfMemoryError。产生该错误的原因主要包括&#xff1a;JVM内存过小。程序不严密&#xff0c;产生了过多的垃圾。 程序体现: 内…...

尚硅谷webpack5笔记2

Loader 原理 loader 概念 帮助 webpack 将不同类型的文件转换为 webpack 可识别的模块。 loader 执行顺序 分类pre: 前置 loadernormal: 普通 loaderinline: 内联 loaderpost: 后置 loader执行顺序4 类 loader 的执行优级为:pre > normal > inline > post 。相…...

笔记本Win 10系统查看电池健康状况

博主最近换了个笔记本电池&#xff0c;之前的电池容量明显变小了很多&#xff0c;而且出现了轻微鼓包的情况。所以用gpt问了一下怎么用系统的方法查看电池情况。 在Windows 10系统中&#xff0c;您可以通过以下步骤来查看笔记本电脑电池的健康状况&#xff1a; 打开命令提示符&…...

算法--动态规划(线性DP、区间DP)

这里写目录标题 tip数组下标从0开始还是从1开始 数学三角形介绍算法思想例题代码 最长上升子序列介绍算法思想例题代码 最长公共子序列介绍算法思想例题代码 tip 数组下标从0开始还是从1开始 如果代码中涉及到数组下标为i-1&#xff08;有时候哪怕不是同一个数组也符合情况&am…...

【ArcGIS】统计格网中不同土地利用类型占比

基于ArcGIS统计格网中不同土地利用类型占比 数据准备ArcGIS操作步骤1、创建渔网&#xff08;Create Fishnet&#xff09;2、建立唯一标识3、选择格网4、提取不同类别土地利用类型5、各类用地面积计算 参考另&#xff1a;可能出现的问题总结Q1&#xff1a;ArcGIS获取唯一值&…...

算法竞赛实用板子

一、声明 自用版参考acwing&#xff0c;致力于实用、好用&#xff0c;板子中有个人理解&#xff0c;持续更新。 二、开板 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日上海开赛!

随着人工智能技术的不断进步以及数字化转型的深入&#xff0c;企业对于高效、精准、自动化的业务流程需求日益迫切。RPA技术作为连接人类工作与机器操作的桥梁&#xff0c;正逐渐从规则驱动发展为智能决策的助手。 由RPA中国联合UiPath共同主办的【第六届RPA极客挑战赛】将于2…...

算法打卡day5|哈希表篇01|Leetcode 242.有效的字母异位词 、19.删除链表的倒数第N个节点、202. 快乐数、1. 两数之和

哈希表基础知识 哈希表 哈希表关键码就是数组的索引下标&#xff0c;然后通过下标直接访问数组中的元素&#xff1b;数组就是哈希表的一种 一般哈希表都是用来快速判断一个元素是否出现集合里。例如要查询一个名字是否在班级里&#xff1a; 要枚举的话时间复杂度是O(n)&…...

『python爬虫』xpath变化导致无法找到指定元素(持续更新中~)

目录 xpath变化的原因1. 语言设置2. 窗口大小n. 待添加~总结 欢迎关注 『python爬虫』 专栏&#xff0c;持续更新中 欢迎关注 『python爬虫』 专栏&#xff0c;持续更新中 xpath变化的原因 XPath 可能会出现变化的原因有很多&#xff0c;以下是一些常见的情况&#xff1a; 网页…...

人大金仓数据库Kingbase服务SQL基础操作手册

1 kingbase服务 1.1 查看kingbase数据库服务进程 ps -ef|grep kingbase1.2 命令启动kingbase数据库服务 # /opt/Kingbase/ES/V8 为金仓安装目录 # /opt/Kingbase/ES/V8/data 为金仓数据目录 # sys_ctl是数据库服务器启停命令&#xff0c;通过-D选项来来指定数据库数据目录 #…...

赎金信00

题目链接 赎金信 题目描述 注意点 magazine中的每个字符只能在ransomNote中使用一次ransomNote和magazine由小写英文字母组成 解答思路 因为ransomNote和magazine由小写英文字母组成&#xff0c;所以使用大小为26的数组存储magazine中a~z对应出现的次数&#xff0c;ransom…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中&#xff0c;我们渴望一个能激发创想、愉悦感官的工作与生活伙伴&#xff0c;它不仅是冰冷的科技工具&#xff0c;更能触动我们内心深处的细腻情感。正是在这样的期许下&#xff0c;华硕a豆14 Air香氛版翩然而至&#xff0c;它以一种前所未有的方式&#x…...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

LabVIEW双光子成像系统技术

双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制&#xff0c;展现出显著的技术优势&#xff1a; 深层组织穿透能力&#xff1a;适用于活体组织深度成像 高分辨率观测性能&#xff1a;满足微观结构的精细研究需求 低光毒性特点&#xff1a;减少对样本的损伤…...

解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist

现象&#xff1a; android studio报错&#xff1a; [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决&#xff1a; 不要动CMakeLists.…...

自然语言处理——文本分类

文本分类 传统机器学习方法文本表示向量空间模型 特征选择文档频率互信息信息增益&#xff08;IG&#xff09; 分类器设计贝叶斯理论&#xff1a;线性判别函数 文本分类性能评估P-R曲线ROC曲线 将文本文档或句子分类为预定义的类或类别&#xff0c; 有单标签多类别文本分类和多…...