NO.8 C语言中用<ctype.h>中函数进行字符处理

NO.8 <ctype.h> 字符处理


在这里插入图片描述


第8.5篇个人博客
在这里插入图片描述

写这篇博客的原因:

之前有了解到一些基础C语言题目是来判断字母,数字,字符的数量,以及经常会有大小写转换。

例如有一道题:
在这里插入图片描述
一开始我只能这样写:

#include <stdio.h>

int main() {
    char ch = 'a';  // 要转换的字符

    // 将小写字符转换为大写
    if (ch >= 'a' && ch <= 'z') {
        ch = ch - ('a' - 'A');
        printf("小写字符转换为大写: %c\n", ch);
    } else {
        printf("不是小写字母,不需要转换: %c\n", ch);
    }

    // 将大写字符转换为小写
    ch = 'A';  // 重新设置字符为大写字母
    if (ch >= 'A' && ch <= 'Z') {
        ch = ch + ('a' - 'A');
        printf("大写字符转换为小写: %c\n", ch);
    } else {
        printf("不是大写字母,不需要转换: %c\n", ch);
    }

    return 0;
}

但是,欸,我突然想起来宋一告诉我有type.h这个头文件。
欸,我explore了一下,欸,真简洁。

就像这样:

使用字符大小写映射函数

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

int main() {
    char ch = 'a';  // 要转换的字符

    // 将小写字符转换为大写
    if (islower(ch)) {
        ch = toupper(ch);
        printf("小写字符转换为大写: %c\n", ch);
    } else {
        printf("不是小写字母,不需要转换: %c\n", ch);
    }

    // 将大写字符转换为小写
    ch = 'A';  // 重新设置字符为大写字母
    if (isupper(ch)) {
        ch = tolower(ch);
        printf("大写字符转换为小写: %c\n", ch);
    } else {
        printf("不是大写字母,不需要转换: %c\n", ch);
    }

    return 0;
}

比那&& < >简介多了

<ctype.h>头文件·是什么?

<ctype.h> 头文件包含了一系列用于字符处理的函数,这些函数通常用于判断字符的属性,比如是否为字母数字空白字符等,或者用于转换字符的大小写

字符分类函数:

在这里插入图片描述

1.isalpha(c) c是否为字母(a-z、A-Z)

2.isdigit(c) c是否为数字(0-9)

3.isalnum(c) c是否为字母或数字

4.islower(c) c是否为小写字母(a-z)

5.isupper(c) c是否为大写字母(A-Z)

6.isspace(c) c是否为空白字符,如空格、制表符、换行符等

7.isprint(c) c是否可打印,即在屏幕上可见

8.ispunct(c) c是否为标点符号(不包括空白字符或字母数字字符)

9.isxdigit(c) c是否为十六进制数字字符(0-9、a-f、A-F)

10.isbank(c) c是否为标准空白字符

11.iscntrl(c) c是否为控制字符

12.isgraph(c) c是否为可显示字符(除空格外)

在这里插入图片描述

isalpha(int c) 是字母吗?

isalpha(int c) 用于检查一个字符是否为字母(包括小写字母和大写字母)。它返回非零值(真)表示字符是字母,返回零(假)表示字符不是字母

示例
#include <stdio.h>
#include <ctype.h>

int main() {
    char ch;
    printf("请输入一个字符: ");
    scanf(" %c", &ch);

    if (isalpha(ch)) {
        printf("'%c' 是一个字母。\n", ch);
    } else {
        printf("'%c' 不是一个字母。\n", ch);
    }

    return 0;
}

isdigit(int c) 是数字吗?

isdigit(int c)用于检查一个字符是否为数字字符(0-9)。具体来说,它接受一个字符作为参数,并返回一个非零值(真)如果该字符是数字字符,否则返回零(假)

在ASCII字符集中,数字字符 ‘0’ 到 ‘9’ 的字符编码是连续的,分别对应整数值 48 到 57。因此,isdigit 函数可以通过检查字符的编码来确定是否为数字字符。

在这里插入图片描述

示例
#include <stdio.h>
#include <ctype.h>

int main() {
    char ch = '5';

    if (isdigit(ch)) {
        printf("'%c' 是一个数字字符。\n", ch);
    } else {
        printf("'%c' 不是一个数字字符。\n", ch);
    }

    return 0;
}

isalnum(int c)是字母或数字吗?

isalnum 函数结合了 isalpha 函数(检查字符是否为字母)和 isdigit 函数(检查字符是否为数字字符)的功能。它用于确定字符是否是字母或数字的任何组合。

示例
#include <stdio.h>
#include <ctype.h>

int main() {
    char ch = 'A';

    if (isalnum(ch)) {
        printf("'%c' 是一个字母或数字字符。\n", ch);
    } else {
        printf("'%c' 不是一个字母或数字字符。\n", ch);
    }

    return 0;
}

其他字符分类函数不再赘述

下面我们通过将字符分类函数应用于字符串“”azAZ0 !\t“中的字符,来展示这些函数(不包括C99中新增的isbank函数)的作用:

tchrtest.c
#include <stdio.h>
#include <ctype.h>

int main() {
	char str[] = "azAZ0 !\t";
	int i;
	
	printf("Character\tisalnum\tisalpha\tiscntrl\tisdigit\tisgraph\tislower\tisprint\tispunct\tisspace\tisupper\tisxdigit\n");
	
	for (i = 0; str[i]; i++) {
		printf("%c\t", str[i]);
		printf("%d\t", isalnum(str[i]));
		printf("%d\t", isalpha(str[i]));
		printf("%d\t", iscntrl(str[i]));
		printf("%d\t", isdigit(str[i]));
		printf("%d\t", isgraph(str[i]));
		printf("%d\t", islower(str[i]));
		printf("%d\t", isprint(str[i]));
		printf("%d\t", ispunct(str[i]));
		printf("%d\t", isspace(str[i]));
		printf("%d\t", isupper(str[i]));
		printf("%d\n", isxdigit(str[i]));
	}
	
	return 0;
}

字符大小写映射函数

int tolower(int c)
int toupper(int c)

tolower函数返回与作为参数传递的字母相对应的小写字母,而toupper函数返回与作为参数传递的字母对应的大写字母。对于这两个函数,如果所传参数不是字母,那么将返回原始字符,不加任何改变。


在这里插入图片描述


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

于舟YUZHOU

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值