如果是日常使用, 那么可以考虑直接调用ctype.h里定义的函数
创新互联建站从2013年成立,先为耿马等服务建站,耿马等地企业,进行企业商务咨询服务。为耿马企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
int tolower(int c);
如果是想自己实现, 那么要先判断c是否确实是大写字母('A'=c 'Z'=c), 然后再转换c += 'a'-'A', 注意这里'a'-'A'其实等于32, 而不是26
大小转换,用ascii码的差值进行运算。
函数实现两个主要功能:
一、识别字符串中大写字母。
二、将大写转小写,累计个数并返回。
下面是代码:
#include stdio.h
int C2LC(char str[]);
int main()
{
int n;
char str[100];
scanf("%s",str);
n=C2LC(str);
printf("大写转小写后为:\n%s\n修改的个数为:%d\n",str,n);
return 0;
}
int C2LC(char str[])
{
int n=0;
char *p=str;
while(*p!=0)
{
if(*p='A' *p='Z') *p=*p+32,n++;
p++;
}
return n;
}
有三种方式可以解决c语言大小写字母的转换
1.使用C语言提供的函数:toupper(),tolower()
使用这两个函数需要引入头文件:#includectype.h
示例代码:
输入如下
2.自己编写转换函数:
因为大小写之间的ASCII码值的差值是固定的,因此可以使用‘a’-‘A’来获取差值。
实例代码:
输出如下:
3.异或0x20来实现转换:
0x20是16进制,表示为2进制是00100000,这样可能还是不明显,转换为10进制,其实就是32
对了,还是利用32.
异或:相同为0,不同为1. 也就是说,任何数字与0异或都是它本身。
所以将其他位都设为0,把第6位(从左向右)设置为1,也就是0x20
如果第6位是1,则异或结果为0.
如果第6位是0,则异或结果为1.
实现了加减32的操作。
示例代码:
输入如下:
希望可以帮到你。。。
char strcase_switch(char* string)
{
int i;
for (i = 0; string[i] != '\0'; i++)
{
if (string[i] = 'a' string[i] = 'z')
{
string[i] = string[i] - 32;
}
if (string[i] = 'A' string[i] = 'Z')
{
string[i] = string[i] + 32;
}
}
return string[i];
}
int _tmain(int argc, _TCHAR* argv[])
{
char str[] = "abcdefGHIJK";
cout strcase_switch(str) endl;
return 0;
}
扩展资料:
char用法:
C语言中char用于定义字符类型变量或字符指针变量,例如“char a;”则定义了变量a是字符类型,“char*a;”则定义了变量a是字符指针类型。
char是C语言整型数据中比较古怪的一个,其它的如int/long/short等不指定signed/unsigned时都默认是signed,但char在标准中不指定为signed/unsigned,编译器可以实现为带符号的,也可以实现为不带符号的。
关于char还有一个特殊的语言就是char*,它在C语言中有专门的语义,既不同于signed char*,也不同于unsigned char*,专门用于指以'\0'为结束的字符串。