C语言——字符函数

前言

字符函数是C语言中专门用来处理字符的函数,再C语言中,我们有时需要大量的处理有关字符的问题,所以字符函数就由此应运而生,接下来我来为大家简单介绍一下字符函数。

一.字符分类函数

函数如果它的参数满足下列条件就返回真
iscntrl任何控制字符
isspace空白字符:空格“ ”,换页'\f',换行'\n',回车'\r',制表符'\t'和垂直制表符'\v'
isdigit十进制数字0~9
isxdigit十六进制,包含所有十进制数字,小写字母a~f,大写字母A~F
islower

小写字母a~z

isupper大写字母A~Z
isalpha字母a~z或A~Z
isalnum字母或数字,a~z,A~Z,0~9
ispunct标点符号,任何不属于数字或字母的图形字符(可打印)
isgraph任何图形字符
isprint任何可打印字符,包括图形字符和空白字符 

接下来,我会举几个字符分类函数的例子,帮助大家理解。

1.iscntrl函数

iscntrl函数的作用是识别控制字符,传来的参数如果是控制字符则返回真,即非0值,否则返回0

//int iscntrl(int c)      
//只要参数是控制字符,就返回非0值,否之返回0
//实际上传给iscntrl的是该字符的ASCII码值

int main()
{
	int ret1 = iscntrl('\t');//'\t'是控制字符,所以返回非0值
	int ret2 = iscntrl('x');//'x'不是控制字符,所以返回0
	printf("%d %d\n", ret1,ret2);
	return 0;
}

结果:

2.isspace函数

isspace函数的作用是识别空白字符,只要是空白字符就返回真,非0;否则返回假,0


 

//int isspace(int c)       只要参数是空白字符就返回非0值,否之返回0
int main()
{
	int ret1 = isspace('\n');//'\n'换行符是空白字符,所以会返回非0值
	int ret2 = isspace('a');//'a'是可打印字符,不是空白字符,所以返回0
	printf("%d %d\n", ret1,ret2);
	return 0;
}

结果为:

3.isdigit函数

isdigit是识别数字字符函数,只要传来的字符参数属于0~9,就返回非0值,否则返回0

//int isdigit(int c)   参数属于0~9,则返回非0值,不属于返回0
int main()
{
	int ret1 = isdigit('0');
	int ret2 = isdigit('z');
	printf("%d %d\n", ret1, ret2);
	return 0;
}

结果为:

4.字符分类函数小结

我在上面给大家介绍了三个字符分类函数的用法,其他的函数用法与之相似,大家可自行验证。下来,我利用islower函数来实现将小写字母转换为大写字母的代码。

#include <stdio.h>
#include <ctype.h>
#include <string.h>

int main()
{
	char arr[] = "i love china";
	size_t len = strlen(arr);
	int i = 0;
	for (i = 0; i < len; i++)
	{
		if (islower(arr[i]))//如果是小写字母则返回非0,并转化为大写字母
		{
			arr[i] -= 32;
		}
	}
	printf("%s", arr);
	return 0;
}

isupper与islower函数功能相似,前者识别大写字母,后者识别小写字母。使用前者可以实现将大写字母转换为小写字母。

#include <stdio.h>
#include <ctype.h>
#include <string.h>

int main()
{
	char arr[] = "I LOVE CHINA FOREVER";
	size_t len = strlen(arr);
	int i = 0;
	for (i = 0; i < len; i++)
	{
		if (isupper(arr[i]))//如果是大写字母则返回非0,并转化为小写字母
		{
			arr[i] += 32;
		}
	}
	printf("%s", arr);
	return 0;
}

除此之外,我们可以将这两者联系起来,实现大小写的互相转化。

二.字符转换函数

1.tolower函数

从函数名来分析,我们就可以的值得知,该函数可以将传进去的参数转换为小写字母,如果传进去的本来就是小写字母,则不变。我们上面利用isupper函数实现了将大写字母转化为小写字母,下来我们再利用tolower函数实现将大写字母转化为小写字母。

#include <stdio.h>
#include <ctype.h>
#include <string.h>

int main()
{
	char arr[] = "HELLO WORLD";
	size_t len = strlen(arr);
	int i = 0;
	for (i = 0; i < len; i++)
	{
		if (isupper(arr[i]))//判断是否为大写字母
		{
			arr[i] = tolower(arr[i]);//将大写字母转化为小写字母,相当于完成了+32的操作
		}
	}
	printf("%s\n", arr);
	return 0;
}

有的人会问:既然tolower可以将大写转化为小写,小写不受影响,那为什么不直接将所有字符都传给该函数?这就涉及到效率的问题,如果每次都调用该函数会导致程序效率降低,所以可以先进行判断,后将判断为真的字符转化为小写字母。

2.toupper函数

该函数与tolower函数异曲同工,该函数是将小写字母转化为大写字母,如果本来就是大写字母则不发生改变。我们现在利用该函数实现将小写字母转化为大写字母。

//toupper函数
//将传进去的参数转化为大写字母,如果本来就是大写字母则不改变
int main()
{
	char arr[] = "hello world";
	size_t len = strlen(arr);
	int i = 0;
	for (i = 0; i < len; i++)
	{
		if (islower(arr[i]))//判断是否为大写字母
		{
			arr[i] = toupper(arr[i]);//将小写字母转化为大写字母,相当于完成了-32的操作
		}
	}
	printf("%s\n", arr);
	return 0;
}

总结

我们在日常生活中经常会遇到需要处理字符的问题,有了这些函数就可以方便我们对字符的操作,之前我们判断其是不是小写字母(arr[i]>='a'&&arr[i]<='z'),这样非常麻烦,有了这些函数之后就可以非常方便的判断是不是我们需要的字符。

  • 30
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值