字符分类函数

字符分类函数

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

iscntrl函数

int iscntrl(int c);

iscntrl 是能够判断参数部分的 c 是否是控制字符。
通过返回值来说明是否是控制字符,如果是控制字符就返回非0的整数,如果不是控制字符,则返回0。
什么是控制字符呢

  • ASCII码是0-31、127(删除键)是控制字符
  • 空白字符:空格(32)、 制表符、 垂直制表符、 换行、 回车、换页。
  • 可显示字符:a-z、A-Z、0-9、~、!、@、、%、^、&、#、$、*、(、)、-、+、{、}、[、]、'、"、<、>、,、?、/、|、\、_、:、;、.,还有顿号、。
  • 控制字符是指那些具有某种特殊功能、不会显示在屏幕上、不会占用字符位置的特殊字符。无法在屏幕上打印的字符称为控制字符。例如,退格键,转义符,换行符等。
  • 控制字符和可打印字符是相对的,可打印字符是指那些会显示在屏幕上、会占用字符位置的“普通”字符。

在这里插入图片描述

通过代码来理解:

#include <stdio.h>
#include <ctype.h>
int main()
{
	int i = 0;
	for (i = 1; i <= 127; i++)
	{
		if (iscntrl(i))
			printf("%d是控制字符\n", i);
	}
	return 0;
}

在这里插入图片描述

#include <stdio.h>
#include <ctype.h>
int main()
{
	int i = 0;
	char str[] = "@666BUFA\n\t  10";
	printf("控制字符是:\n");
	for (i = 1; str[i] != '\0'; i++)
	{
		if (iscntrl(str[i]))
			printf("str[%d],ASCII码是%d\n", i, str[i]);
	}
	return 0;
}

在这里插入图片描述

isspace函数

int isspace(int c);

isspace 是能够判断参数部分的 c 是否是空白字符。
通过返回值来说明是否是空白字符,如果是控制字符就返回非0的整数,如果不是空白字符,则返回0。

  • 空白字符:空格(32)、 水平制表符(9)、换行(10) 、 垂直制表符(11)、 换页(12)、回车(13)。

通过代码来理解:

#include <stdio.h>
#include <ctype.h>
int main()
{
	int i = 0;
	for (i = 1; i <= 127; i++)
	{
		if (isspace(i))
			printf("%d是空白字符\n", i);
	}
	return 0;
}

在这里插入图片描述

#include <stdio.h>
#include <ctype.h>
int main()
{
	int i = 0;
	char str[] = "@666BUFA\n\t  10";
	printf("空白字符是:\n");
	for (i = 1; str[i] != '\0'; i++)
	{
		if (isspace(str[i]))
			printf("str[%d],ASCII码是%d\n", i, str[i]);
	}
	return 0;
}

在这里插入图片描述

isdigit函数

int isdigit(int c);

isdigit 是能够判断参数部分的 c 是否是十进制数字字符0 ~ 9。
通过返回值来说明是否是十进制数字字符0 ~ 9,如果是十进制数字字符0 ~ 9就返回非0的整数,如果不是十进制数字字符0 ~ 9,则返回0。
注意: 是字符0 ~ 9,而不是ASCII码。

通过代码来理解:

#include <stdio.h>
#include <ctype.h>
int main()
{
	int i = 0;
	for (i = 1; i <= 127; i++)
	{
		if (isdigit(i))
			printf("%c,ASCII码是%d\n", i, i);
	}
	return 0;
}

在这里插入图片描述

#include <stdio.h>
#include <ctype.h>
int main()
{
	int i = 0;
	char str[] = "@666BUFA\n\t  10";
	printf("是十进制数字字符0~9:\n");
	for (i = 1; str[i] != '\0'; i++)
	{
		if (isdigit(str[i]))
			printf("str[%d] = %c,ASCII码是%d\n", i, str[i], str[i]);
	}
	return 0;
}

在这里插入图片描述

isxdigit函数

int isxdigit(int c);

isxdigit 是能够判断参数部分的 c 是否是十六进制数字字符(包括所有十进制数字字符,小写字母字符a ~ f,大写字母字符A ~ F)。
通过返回值来说明是否是十六进制数字字符,如果是十六进制数字字符就返回非0的整数,如果不是十六进制数字字符,则返回0。

通过代码来理解:

#include <stdio.h>
#include <ctype.h>
int main()
{
	int i = 0;
	for (i = 1; i <= 127; i++)
	{
		if (isxdigit(i))
			printf("%c,ASCII码是%d\n", i, i);
	}
	return 0;
}

在这里插入图片描述

#include <stdio.h>
#include <ctype.h>
int main()
{
	int i = 0;
	char str[] = "@666BUFA\n\t  10";
	printf("是十六进制数字字符:\n");
	for (i = 1; str[i] != '\0'; i++)
	{
		if (isxdigit(str[i]))
			printf("str[%d] = %c,ASCII码是%d\n", i, str[i], str[i]);
	}
	return 0;
}

在这里插入图片描述

islower函数

int islower( int c );

islower 是能够判断参数部分的 c 是否是小写字母字符
通过返回值来说明是否是小写字母字符,如果是小写字母字符就返回非0的整数,如果不是小写字母字符,则返回0。

通过写一个代码,将字符串中的小写字母转大写,其他字符不变的练习代码来理解.

#include <stdio.h>
#include <ctype.h>
int main()
{
	int i = 0;
	char str[] = "Onward And Upward";
	char c = 0;
	while (str[i] != '\0')
	{
		c = str[i];
		if (islower(c))
			c -= 32;//小写字母在ASCII表中值比对应的大写字母大32
		putchar(c);
		i++;
	}
	return 0;
}

在这里插入图片描述

isupper函数

int isupper( int c );

isupper 是能够判断参数部分的 c 是否是大写字母字符
通过返回值来说明是否是大写字母字符,如果是大写字母字符就返回非0的整数,如果不是大写字母字符,则返回0。

通过写一个代码,将字符串中的大写字母转小写,其他字符不变的练习代码来理解.

#include <stdio.h>
#include <ctype.h>
int main()
{
	int i = 0;
	char str[] = "LIFE AND LEARN";
	char c = 0;
	while (str[i] != '\0')
	{
		c = str[i];
		if (isupper(c))
			c += 32;//大写字母在ASCII表中值比对应的小写字母小32
		putchar(c);
		i++;
	}
	return 0;
}

在这里插入图片描述

isalpha函数

int isalpha( int c );

isalpha 是能够判断参数部分的 c 是否是字母字符(包括a ~ z或A ~ Z)
通过返回值来说明是否是字母字符,如果是字母字符就返回非0的整数,如果不是字母字符,则返回0。

通过一段代码来理解:

#include <stdio.h>
#include <ctype.h>
int main()
{
	char str[] = "@Man Come On!666";
	int i = 0;
	while (str[i])
	{
		if (isalpha(str[i]))
			printf("%c", str[i]);
		i++;
	}
	return 0;
}

在这里插入图片描述

isalnum函数

int isalnum( int c );

isalnum 是能够判断参数部分的 c 是否是字母或数字字符(包括a ~ z或A ~ Z或0 ~ 9)
通过返回值来说明是否是字母或数字字符,如果是字母或数字字符就返回非0的整数,如果不是字母或数字字符,则返回0。

通过代码来理解:

#include <stdio.h>
#include <ctype.h>
int main()
{
	char str[] = "@Man Come On!666";
	int i = 0;
	while (str[i])
	{
		if (isalnum(str[i]))
			printf("%c", str[i]);
		i++;
	}
	return 0;
}

在这里插入图片描述

ispunct函数

int ispunct( int c );

ispunct 是能够判断参数部分的 c 是否是标点符号,任何不属于数字或字母或空白符的图形字符(可打印)
通过返回值来说明是否是标点符号,如果是标点符号就返回非0的整数,如果不是标点符号,则返回0。

通过代码来理解:

#include <stdio.h>
#include <ctype.h>
int main()
{
	char str[] = "@Man Come On!!!^-^666";
	int i = 0;
	while (str[i])
	{
		if (ispunct(str[i]))
			printf("%c", str[i]);
		i++;
	}
	return 0;
}

在这里插入图片描述

isgraph函数

int isgraph(int c);

isgraph 是能够判断参数部分的 c 是否是任何图形字符,任何不属于空白符的图形字符(可打印)
通过返回值来说明是否是任何图形字符,如果是任何图形字符就返回非0的整数,如果不是任何图形字符,则返回0。

通过代码来理解:

#include <stdio.h>
#include <ctype.h>
int main()
{
	char str[] = "@Man Come On!!!^-^666";
	int i = 0;
	while (str[i])
	{
		if (isgraph(str[i]))
			printf("%c", str[i]);
		i++;
	}
	return 0;
}

在这里插入图片描述

isprint函数

int isprint( int c );

isprint 是能够判断参数部分的 c 是否是任何可打印字符.
通过返回值来说明是否是任何可打印字符,如果任何可打印字符就返回非0的整数,如果不任何可打印字符,则返回0。

通过代码来理解:

#include <stdio.h>
#include <ctype.h>
int main()
{
	char str[] = "@Man Come On!!!^-^666\n";
	int i = 0;
	while (str[i])
	{
		if (isprint(str[i]))
			printf("%c", str[i]);
		i++;
	}
	return 0;
}

在这里插入图片描述

注意: 换行字符(\n) 是控制字符,不是打印字符,所以最终程序结果并没有出现换行.

好了,字符分类函数就讲到这里,希望对大家的学习有所帮助.

  • 45
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值