前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【C语言】字符函数

【C语言】字符函数

作者头像
zxctscl
发布2024-01-22 21:59:12
1050
发布2024-01-22 21:59:12
举报
文章被收录于专栏:zxctscl个人专栏

1. 字符分类函数

C语言中有一系列的函数是专门做字符分类的,也就是一个字符是属于什么类型的字符的。这些函数的使⽤都需要包含一个头文件是ctype.h

函数

如果他的参数符合下列条件就返回真

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

任何图形字符

2. 举例实现

2.1 islower

在没有学islower以前,我们判断参数是否是小写字母的,我们用到的条件是if (ch >= 'a' && ch <= 'z'),而islower直接可以判断。 islower 是用来判断参数是否是小写字母,如果是小写字母返回非0的值,如果不是小写字母返回0。

代码语言:javascript
复制
#include <ctype.h>
#include <stdio.h>
 int main()
{
   int ret = islower('Q');
   printf("%d\n", ret);
   return 0;
}

结果显然Q不是小写字母,所以返回的就是0。

0
0

2.2 isupper

isupper是用来判断参数是否是大写字母的,如果是返回非0的值,如果不是返回0。

代码语言:javascript
复制
#include <ctype.h>
#include <stdio.h>
int main()
{
	int ret = isupper('q');
	printf("%d\n", ret);
	return 0;
}
0
0

结果显然q不是大写字母,所以返回的就是0。

2.3 isdigit

isdigit是用来判断参数是0-9的数字,如果是返回非0的值,如果不是返回0。

代码语言:javascript
复制
#include <ctype.h>
#include <stdio.h>
{
	int ret = isdigit('w');
	printf("%d\n", ret);
	return 0;
}

而W显然不是数字,顾返回0。

0
0

2.4 将字符串中的小写字母转大写

我们知道在C语言中‘A’(65)与‘a’(97)相差32,‘B’与‘b’也相差32,就是说大小写字母相差32。 我们要实现小写转大写,首先要遍历字符串,然后发现小写字母,最后将它们都转化为大写。

在遍历字符串,就要知道字符串的长度,我们用strlen求字符串长度,而字符串的结束标志是\0,strlen统计的是\0之前出现的字符的个数。 举个列子就知道了

代码语言:javascript
复制
#include <ctype.h>
#include <stdio.h>
#include <string.h>
int main()
{
	char arr[] = "abcdef";
	//a b c d e f \0
	size_t len = strlen(arr);
	printf("%zd\n", len);
	return 0;
}
6
6

注意的是在使用strlen函数时:1. strlen函数要正确获得字符串长度的话,字符串中必须得有\0,2. 要注意strlen的返回值类型是size_t。 举例说明一下

代码语言:javascript
复制
#include <stdio.h>
#include <string.h>
int main()
{
    char arr[] = "abcdef";
	if (strlen("abc") - strlen("abcdef") > 0)
		printf(">\n");
	else
		printf("<=\n");

	return 0;
}

我们会觉得strlen(“abc”) 为3,而strlen(“abcdef”)为6,应该是<=,怎么是>呢? 这就是上面提到的strlen的返回值类型是size_t。

>
>

当我们知道字符串的长度,我们要将字符串中的小写字母转大写的代码实现:

代码语言:javascript
复制
#include <ctype.h>
#include <stdio.h>
int main()
{
	char str[] = "i am A Student";
	size_t len = strlen(str);//14
	size_t i = 0;
	for (i = 0; i < len; i++)
	{
		if (islower(str[i]))
		{
			str[i] = str[i] - 32;
		}
	}
	printf("%s\n", str);
	return 0;
}

结果如下:

大写
大写

在上面的例子中将字符串中的小写字母转大写,需要减32,那库函数中有没有直接实现大小字母转化的函数呢? 答案当然是有,下面我们就介绍一下字符转换函数。

3. 字符转换函数

1.int tolower ( int c ); //将参数传进去的大写字母转小写 2.int toupper ( int c ); //将参数传进去的小写字母转大写

上面的代码,我们将小写转大写,是-32完成的效果,有了转换函数,就可以直接使用toupper函数。

代码语言:javascript
复制
int main()
{
	char str[] = "i am A Student";
	size_t len = strlen(str);//14
	size_t i = 0;
	for (i = 0; i < len; i++)
	{
		if (islower(str[i]))
		{
			str[i] = toupper(str[i]);
		}
	}
	printf("%s\n", str);
	return 0;
}

最终结果与上面的一样。

大写
大写
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-10-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 字符分类函数
  • 2. 举例实现
    • 2.1 islower
      • 2.2 isupper
        • 2.3 isdigit
          • 2.4 将字符串中的小写字母转大写
          • 3. 字符转换函数
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档