C语言-字符转化函数和字符分类函数

字符转换函数

islower(判断小写)

在C语言中:
- `islower` 函数用于检查一个字符是否是小写字母。

如果字符是小写字母,函数返回非零值(通常为 `1`);如果字符不是小写字母,函数返回 `0`。

#include <ctype.h>
int islower(int c);

代码举例(这里代码举例主要包括代码的模拟和代码的使用)

举例1

当你调用islower函数时,如果你传递的字符是小写字母,它将返回非零值(通常是1),否则返回0。在C语言中,非零值通常被视为“真”,而0被视为“假”。
#include <stdio.h>
#include <ctype.h> // 需要包含ctype.h头文件

int main() {
    char ch = 'a'; // 例子中的字符
    if (islower(ch)) {//这里判断是不是小写
        printf("字符 %c 是小写字母。\n", ch);
    } else {
        printf("字符 %c 不是小写字母。\n", ch);
    }
    return 0;
}
在这个例子中,如果ch是小写字母,islower函数将返回1,if语句中的条件将为真,然后会打印出相应的消息。如果ch不是小写字母,islower将返回0,if语句中的条件将为假,打印出另一个消息。

举例2

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<ctype.h>
//islower的使用
//在C语言中,可以使用islower函数来判断一个字符是否为小写字母。
// islower函数是ctype.h头文件中的一个函数,它的返回值是一个非零值(通常是1),表示字符是小写字母;
// 返回值为0表示字符不是小写字母。
// 大写字母A的ASCII码值比小写字母a的ASCII码值大32。

int main()
{
	//首先我们这里先模拟判断和转化的条件都是什么
	char arr1[] = "I Am A Studen"; 
	int a = 0;
	while (arr1[a] != '\0')//这里是只要遇见的不是最后一个字符后面的'\0'也就是一直循环 遇见也就说明循环结束
	{
		if (arr1[a] >= 'a' && arr1[a] <= 'z')//这里是一个取值范围 这里可以理解为ASCII码值的取值范围 在C语言里面有不能访问的地址 a-z大小写也都是不能访问地址
		{
			arr1[a] -= 32;// 大写字母A的ASCII码值比小写字母a的ASCII码值大32。所以按照逻辑来进行说明的话 需要+-32
		}
		a++;//这里数组的形式 也就遍历数组  每次数组的那个元素 满足条件的情况下 就会转化 不满足条件的情况下则++ 到下一个元素
	}
	printf("a-z计算                  %s\n", arr1);//这里采取一个打印说明

	char arr2[] = "I Am A Studen";
	int b= 0;
	while (arr2[b] != '\0')
	{
		if (islower(arr2[b]))//这里和上面是没有什么区别的 这里的islower的作用就是判断出是不是小写 如果是小写 那么返回值不是0 (如果不是小写,返回值是0,跳出循环) 满足小写条件的时候 进入计算条件
		{
			arr2[b] -= 32;// 大写字母A的ASCII码值比小写字母a的ASCII码值大32。
		}
		b++;//剩下的逻辑和之前的逻辑判断是一样的
	}
	printf("islower(找到小写字母)  %s\n", arr2);
	return 0;
}

———————————————————————————————————————————

isupper(判断大写)

- `isupper` 函数用于检查一个字符是否是大写字母。

如果字符是大写字母,函数返回非零值(通常为 `1`);如果字符不是大写字母,函数返回 `0`。
 

#include <ctype.h>
int isupper(int c);

代码举例(这里代码举例主要包括代码的模拟和代码的使用)

char arr6[] = "I Am A Studen";
int f = 0;
while (arr6[f] != '\0')
{
	if (isupper(arr6[f]))//这里是一个判断函数 也就是判断是不是大写 如果是大写  此时也就进行下一步的函数计算
	{
		arr6[f] = tolower(arr6[f]);//这里是把大写转化为小写 等同于+32
	}
	f++;
}
printf("isupper(判断大写)和toupper(大写转化为小写)结合:%s\n", arr6);

————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

字符分类函数

tolower(大写转化为小写)

- `tolower` 函数用于将一个字符转换为小写字母。

如果字符是大写字母,函数将其转换为对应的小写字母;如果字符已经是小写字母或者不是字母,则不进行任何转换,函数返回转换后的字符。
 

#include <ctype.h>
int tolower(int c);

代码举例(这里代码举例主要包括代码的模拟和代码的使用)

	char arr6[] = "I Am A Studen";
	int f = 0;
	while (arr6[f] != '\0')
	{
		if (isupper(arr6[f]))//这里是一个判断函数 也就是判断是不是大写 如果是大写  此时也就进行下一步的函数计算
		{
			arr6[f] = tolower(arr6[f]);//这里是把大写转化为小写 等同于+32
		}
		f++;
	}
	printf("isupper(判断大写)和toupper(大写转化为小写)结合:%s\n", arr6);
	//注意事项 这里需要知道 转化和判断函数使用的时候 需要相对结合的准确 因为如果是判断一个大写 但是是把小写转化为大写字符 此时也就是无意义的代码 是没有必要的

———————————————————————————————————————————

toupper(小写转化为大写) 

- `toupper` 函数用于将一个字符转换为大写字母。

如果字符是小写字母,函数将其转换为对应的大写字母;如果字符已经是大写字母或者不是字母,则不进行任何转换,函数返回转换后的字符。

#include <ctype.h>
int toupper(int c);

代码举例(这里代码举例主要包括代码的模拟和代码的使用)

//试题1 用库函数把my name laoda 用库函数转化一下 转化为大写
//试题2 不用库函数my name laoda 用库函数转化一下 转化为大写
//试题1 解答
char str1[] = "my name laoda ";
int g = 0;
while (str1[g] != '\0')
{
	if (islower(str1[g]))//判断是不是小写 判断成功 然后进去转化
	{
		str1[g] = toupper(str1[g]);//这是我出的一个简单的题目 也就是一个用逻辑代码完成 一个用库函数完成 islower判断是不是小写 toupper小写转化为大写
	}
	g++;
}
printf("题目1  %s\n", str1);


//试题2解答和试题1形成对比
char str2[] = "my name laoda ";
int h = 0;
while (str2[h] != '\0')//这里也就是一个基本的逻辑代码 只要遇见的不是最后一个字符'\0'就继续循环
{
	if (str2[h] >= 'a' && str2[h] <= 'z')
	{
		str2[h] -= 32;// 大写字母A的ASCII码值比小写字母a的ASCII码值大32。
	}
	h++;
}
printf("题目2  %s\n", str2);

———————————————————————————————————————————

字符转化函数和字符分类函数代码总结

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<ctype.h>
//islower的使用
//在C语言中,可以使用islower函数来判断一个字符是否为小写字母。
// islower函数是ctype.h头文件中的一个函数,它的返回值是一个非零值(通常是1),表示字符是小写字母;
// 返回值为0表示字符不是小写字母。
// 大写字母A的ASCII码值比小写字母a的ASCII码值大32。

int main()
{
	//首先我们这里先模拟判断和转化的条件都是什么
	char arr1[] = "I Am A Studen"; 
	int a = 0;
	while (arr1[a] != '\0')//这里是只要遇见的不是最后一个字符后面的'\0'也就是一直循环 遇见也就说明循环结束
	{
		if (arr1[a] >= 'a' && arr1[a] <= 'z')//这里是一个取值范围 这里可以理解为ASCII码值的取值范围 在C语言里面有不能访问的地址 a-z大小写也都是不能访问地址
		{
			arr1[a] -= 32;// 大写字母A的ASCII码值比小写字母a的ASCII码值大32。所以按照逻辑来进行说明的话 需要+-32
		}
		a++;//这里数组的形式 也就遍历数组  每次数组的那个元素 满足条件的情况下 就会转化 不满足条件的情况下则++ 到下一个元素
	}
	printf("a-z计算                  %s\n", arr1);//这里采取一个打印说明

	char arr2[] = "I Am A Studen";
	int b= 0;
	while (arr2[b] != '\0')
	{
		if (islower(arr2[b]))//这里和上面是没有什么区别的 这里的islower的作用就是判断出是不是小写 如果是小写 那么返回值不是0 (如果不是小写,返回值是0,跳出循环) 满足小写条件的时候 进入计算条件
		{
			arr2[b] -= 32;// 大写字母A的ASCII码值比小写字母a的ASCII码值大32。
		}
		b++;//剩下的逻辑和之前的逻辑判断是一样的
	}
	printf("islower(找到小写字母)  %s\n", arr2);


	char arr3[] = "I Am A Studen";
	int c = 0;
	while (arr3[c] != '\0')
	{
		if (arr3[c] >= 'A' && arr3[c] <= 'Z')
		{
			arr3[c] += 32;// 大写字母A的ASCII码值比小写字母a的ASCII码值大32。
		}
		c++;
	}
	printf("A-Z计算                  %s\n", arr3);

	char arr5[] = "I Am A Studen";
	int e = 0;
	while (arr5[e] != '\0')
	{
		if (isupper(arr5[e]))
		{
			arr5[e] += 32;// 大写字母A的ASCII码值比小写字母a的ASCII码值大32。
		}
		e++;
	}
	printf("isupper(找到大写字母)  %s\n\n\n", arr5);
	printf("结合使用(这里需要知道,如果判断为是大写isupper,那么此时返回的不是空指针,也就是此时转化是用toupper进行接收,转化为小写。):\n");
	char arr4[] = "I Am A Studen";
	int d = 0;
	while (arr4[d] != '\0')
	{
		if (islower(arr4[d]))//这里进行判断是不是小写 满足条件此时进行if里面的函数计算
		{
			arr4[d] = toupper(arr4[d]);//这里是一个转化的函数 这里是把小写转化为大写的库函数 这里等同于-32
		}
		d++;
	}
	printf("islower(判断小写)和toupper(小写转化为大写)结合:%s\n", arr4);

	char arr6[] = "I Am A Studen";
	int f = 0;
	while (arr6[f] != '\0')
	{
		if (isupper(arr6[f]))//这里是一个判断函数 也就是判断是不是大写 如果是大写  此时也就进行下一步的函数计算
		{
			arr6[f] = tolower(arr6[f]);//这里是把大写转化为小写 等同于+32
		}
		f++;
	}
	printf("isupper(判断大写)和toupper(大写转化为小写)结合:%s\n", arr6);
	//注意事项 这里需要知道 转化和判断函数使用的时候 需要相对结合的准确 因为如果是判断一个大写 但是是把小写转化为大写字符 此时也就是无意义的代码 是没有必要的

	//试题1 用库函数把my name laoda 用库函数转化一下 转化为大写
	//试题2 不用库函数my name laoda 用库函数转化一下 转化为大写
	//试题1 解答
	char str1[] = "my name laoda ";
	int g = 0;
	while (str1[g] != '\0')
	{
		if (islower(str1[g]))
		{
			str1[g] = toupper(str1[g]);//这是我出的一个简单的题目 也就是一个用逻辑代码完成 一个用库函数完成 islower判断是不是小写 toupper小写转化为大写
		}
		g++;
	}
	printf("题目1  %s\n", str1);


	//试题2解答
	char str2[] = "my name laoda ";
	int h = 0;
	while (str2[h] != '\0')//这里也就是一个基本的逻辑代码 不过多的说明
	{
		if (str2[h] >= 'a' && str2[h] <= 'z')
		{
			str2[h] -= 32;// 大写字母A的ASCII码值比小写字母a的ASCII码值大32。
		}
		h++;
	}
	printf("题目2  %s\n", str2);

	return 0;
}

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值