C语言中大小写字母的转化

目录

  • [1. 利用库函数](#1. 利用库函数)
    • [1.1 toupper() 小写转大写](#1.1 toupper() 小写转大写)
      • 1.1.1等效函数
      • [1.1.2 函数申明](#1.1.2 函数申明)
      • [1.1.3 函数的参数和返回值](#1.1.3 函数的参数和返回值)
      • [1.1.4 函数基本使用](#1.1.4 函数基本使用)
    • [1.2 tolower() 大写转小写](#1.2 tolower() 大写转小写)
      • [1.2.1 等效函数](#1.2.1 等效函数)
      • [1.2.1 函数申明](#1.2.1 函数申明)
      • [1.2.2 函数的参数返回值](#1.2.2 函数的参数返回值)
      • [1.2.3 函数基本使用](#1.2.3 函数基本使用)
  • [2. 利用借助ascll值](#2. 利用借助ascll值)

1. 利用库函数

1.1 toupper() 小写转大写

1.1.1等效函数

c 复制代码
#include <stdio.h>
#include <string.h>

int my_toupper(int c)
{
	if ('a' <= c && c <= 'z')
	{
		return c - 32;
	}//如果是小写字母,则返回对应大写字母的ascll码
	else
	{
		return c;
	}//否则返回参数的值
}

int main()
{
	char str[20] = "ABCDEF#abcdef";
	int sz = strlen(str);
	
	for (int i = 0; i < sz; i++)
	{
		if ('a' <= str[i] && str[i] <= 'z')
		{
			str[i] = my_toupper(str[i]);
		}
		
	}

	printf("%s\n", str);
	return 0;
}

1.1.2 函数申明

c 复制代码
int toupper ( int c );

1.1.3 函数的参数和返回值

  • 参数:可以是整型,也可以是小写字母(a-z)
  • 因为本质上小写字母(char类型)在进行运算或者操作的时候都会先整型提升为int类型
  • 返回类型:当参数有对应的大写字母时,则以int类型返回对应大写字母的值,否则以int类型返回小写字母的值
  • 整型提升可以看这个------操作符详解2

1.1.4 函数基本使用

  • 接下来用示例来更加清晰的解释一下:
c 复制代码
int main()
{
	int a = toupper(97);//97对应小写字母a,有对应的大写字母A,返回对应大写字母的ascll值65
	int b = toupper(65);//65对应的大写字母A,无需转换,返回65

	printf("%d %d\n", a, b);
	printf("%c %c\n", a, b);

	return 0;
}
  • 运行结果为:
  • 也可以这样:
c 复制代码
#include <stdio.h>
#include <ctype.h>

int main()
{
	char a = (char)toupper('a');
	printf("%d %c", a, a);
	return 0;
}
  • 这里的 ' a '在使用的时候本质时传了对应的ascll码,返回值为int
  • 所以将其强制转换为char类型之后再存到变量a中

1.2 tolower() 大写转小写

1.2.1 等效函数

c 复制代码
#include <stdio.h>
#include <string.h>

int my_tolower(int c)
{
	if ('A' <= c && c <= 'Z')
	{
		return c + 32;
	}//当c为大写字母的ascll的值时,返回对应小写字母的ascll值
	else
	{
		return c;
	}//否则返回参数c
}

int main()
{
	char str[20] = "ABCDEF#abcdef";
	int sz = strlen(str);

	for (int i = 0; i < sz; i++)
	{
		if ('A' <= str[i] && str[i] <= 'Z')
		{
			str[i] = my_tolower(str[i]);
		}

	}

	printf("%s\n", str);
	return 0;
}

1.2.1 函数申明

c 复制代码
int tolower ( int c );

1.2.2 函数的参数返回值

  • 这里的 tolower 和 上面的 toupper 很类似
  • 参数:可以是整型,也可以是大写字母(a-z)
  • 因为本质上大写字母(char类型)在进行运算或者操作的时候都会先整型提升为int类型
  • 返回类型:当参数有对应的小写字母时,则以int类型返回对应小写字母的值,否则以int类型返回大写字母的值

1.2.3 函数基本使用

c 复制代码
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main()
{
	char str[10] = "ABCDEF";
	for (int i = 0; i < strlen(str); i++)
	{
		str[i] = tolower(str[i]);
	}//大写转为小写

	printf("%s\n", str);
	return 0;
}

2. 利用借助ascll值

  • 根据上面的表我们可以看出大写字母的ascll码加上32就是对应的小写字母的ascll码值了
  • 那么我们要实现大小写的转换,只需要加上或者减去32就可以了
  • 代码如下:
c 复制代码
#include <stdio.h>
#include <string.h>

int main()
{
	char str[20] = "ABCDEF#abcdef";

	for (int i = 0; i < strlen(str); i++)
	{
		if ('a' <= str[i] && str[i] <= 'z')
		{
			str[i] -= 32;
		}
		else if ('A' <= str[i] && str[i] <= 'Z')
		{
			str[i] += 32;
		}
	}

	printf("%s\n", str);
	return 0;
}
  • 运行结果为:
相关推荐
ZTLJQ6 小时前
序列化的艺术:Python JSON处理完全解析
开发语言·python·json
2401_891482176 小时前
多平台UI框架C++开发
开发语言·c++·算法
88号技师7 小时前
2026年3月中科院一区SCI-贝塞尔曲线优化算法Bezier curve-based optimization-附Matlab免费代码
开发语言·算法·matlab·优化算法
t198751287 小时前
三维点云最小二乘拟合MATLAB程序
开发语言·算法·matlab
无敌昊哥战神7 小时前
【LeetCode 257】二叉树的所有路径(回溯法/深度优先遍历)- Python/C/C++详细题解
c语言·c++·python·leetcode·深度优先
m0_726965987 小时前
面面面,面面(1)
java·开发语言
2401_831920748 小时前
分布式系统安全通信
开发语言·c++·算法
~无忧花开~8 小时前
React状态管理完全指南
开发语言·前端·javascript·react.js·前端框架
m0_488633328 小时前
C语言中枚举类型变量的定义、赋值及使用方法全解析
c语言·枚举类型·实例分析·变量定义·赋值使用
老鱼说AI8 小时前
大规模并发处理器程序设计(PMPP)讲解(CUDA架构):第四期:计算架构与调度
c语言·深度学习·算法·架构·cuda