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'),这样非常麻烦,有了这些函数之后就可以非常方便的判断是不是我们需要的字符。

相关推荐

  1. C语言字符函数字符串函数

    2024-03-24 10:50:01       37 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-24 10:50:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-24 10:50:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-24 10:50:01       82 阅读
  4. Python语言-面向对象

    2024-03-24 10:50:01       91 阅读

热门阅读

  1. Pytorch:nn.Upsample() 和nn.ConvTranspose2d()

    2024-03-24 10:50:01       46 阅读
  2. Docker 容器中使用 RAM 角色实现云监控事件监控

    2024-03-24 10:50:01       44 阅读
  3. 在vue项目中封装并使用WebSocket(2)

    2024-03-24 10:50:01       45 阅读
  4. 【VSTO开发】遍历 Ribbon 中的所有控件或按钮

    2024-03-24 10:50:01       43 阅读
  5. C语言UDP基础CS模型

    2024-03-24 10:50:01       44 阅读
  6. 关于阿里云的高级运维面试题

    2024-03-24 10:50:01       37 阅读
  7. 蓝桥杯刷题--python-30

    2024-03-24 10:50:01       44 阅读
  8. C#与三菱PLC网络模块通讯

    2024-03-24 10:50:01       43 阅读
  9. go实现tcp客户端

    2024-03-24 10:50:01       44 阅读