字符转换函数
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;
}