目录
- [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码表------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;
}
- 运行结果为: