【字符函数】

图片来源于网络

✨博客主页:小钱编程成长记
🎈博客专栏:进阶C语言
🎈相关博文:字符串函数(一)字符串函数(二)

字符函数

1. 字符函数分为 字符分类函数和字符转换函数。
2. 函数一次只能访问一个字符。
3. 头文件是ctype.h

1.字符分类函数

函数如果它的参数符合下列条件就返回真
iscntrl任何控制字符
isspace空白字符:空格‘ ’,换页‘\f’,换行’\n’,回车‘\r’,制表符’\t’或者垂直制表符’\v’
isdigit十进制数字 0~9
isxdigit十六进制数字,包括所有十进制数字,小写字母af,大写字母AF
islower小写字母a~z
isupper大写字母A~Z
isalpha字母az或AZ
isalnum字母或者数字,az,AZ,0~9
ispunct标点符号,任何不属于数字或者字母的图形字符(可打印)
isgraph任何图形字符
isprint任何可打印字符,包括图形字符和空白字符

输出非0,则说明结果为真

1.1 iscntrl - 判断是否是控制字符

具体介绍链接

int iscntrl ( int c );

控制字符是ASCII编码中,不可显示的字符。它们通常用于控制打印机、终端等设备的行为,例如换行、回车、光标移动等。控制字符包括在ASCII码表中ASCII码为0到31和127的字符

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

int main()
{
	char ch = '\n'; //控制字符
	int i = iscntrl(ch);
	printf("%d\n", i);

	return 0;
}

1.2 isspace - 判断是否是空白字符

具体介绍链接

int isspace ( int c );
#include <stdio.h>
#include <ctype.h>

int main()
{
	char ch = ' '; //空白字符
	int i = isspace(ch);
	printf("%d\n", i);

	return 0;
}

1.3 isdigit - 判断是否是十进制数字0~9

具体介绍链接

int isdigit ( int c );
#include <stdio.h>
#include <ctype.h>

int main()
{
	char ch = '3'; 
	int i = isdigit(ch); //判断是否是十进制数字0~9
	printf("%d\n", i);

	return 0;
}

1.4 isxdigit - 判断是否是十六进制数字

具体介绍链接

int isxdigit ( int c );
#include <stdio.h>
#include <ctype.h>

int main()
{
	char ch = 'a';
	int i = isxdigit(ch); //判断是否是十进制数字0~9
	printf("%d\n", i);

	return 0;
}

1.5 islower - 判断是否是小写字母

具体介绍链接
和大写类似

1.6 isupper - 判断是否是大写字母

具体介绍链接

int isupper ( int c );
#include <stdio.h>
#include <ctype.h>

int main()
{
    char ch = 'A';
    int result = isupper(ch); // 判断ch是否为大写字母

    if (result != 0)
    {
        printf("是大写字母\n");
    }
    else
    {
        printf("不是大写字母\n");
    }

    return 0;
}

1.7 isalph - 判断是否是字母

具体介绍链接

int isalpha ( int c );
#include <stdio.h>
#include <ctype.h>

int main()
{
    char ch = 'A';
    int result = isalpha(ch); // 判断ch是否为字母

    if (result != 0)
    {
        printf("是字母\n");
    }
    else
    {
        printf("不是字母\n");
    }

    return 0;
}

1.8 isalnum - 判断是否是字母或数字

具体介绍链接

int isalnum ( int c );
#include <stdio.h>
#include <ctype.h>

int main()
{
    char ch = 'A';
    int result = isalnum(ch); // 判断ch是否为字母或数字

    if (result != 0)
    {
        printf("是字母或数字\n");
    }
    else
    {
        printf("不是字母或数字\n");
    }

    return 0;
}

1.9 ispunct - 判断是否是标点符号

具体介绍链接

int ispunct ( int c );
#include <stdio.h>
#include <ctype.h>

int main()
{
    char ch = '.';
    int result = ispunct(ch); // 判断ch是否为标点符号

    if (result != 0)
    {
        printf("是标点符号\n");
    }
    else
    {
        printf("不是标点符号\n");
    }

    return 0;
}

1.10 isgraph - 判断是否是任何图形字符(除了控制字符和空格)

具体介绍链接

int isgraph ( int c );
#include <stdio.h>
#include <ctype.h>

int main()
{
    char ch = 'A';
    int result = isgraph(ch); // 判断ch是否为可打印字符但不包括空格

    if (result != 0)
    {
        printf("是可打印字符(不包括空格)\n");
    }
    else
    {
        printf("不是可打印字符或是空格\n");
    }

    return 0;
}

1.11 isprint - 判断是否是任何可打印字符

具体介绍链接

int isprint ( int c );
#include <stdio.h>
#include <ctype.h>

int main()
{
    char ch = 'A';
    int result = isprint(ch); // 判断ch是否为可打印字符

    if (result != 0)
    {
        printf("是可打印字符\n");
    }
    else
    {
        printf("不是可打印字符\n");
    }

    return 0;
}

2.字符转换函数

2.1 tolower - 大写字母转小写字母

具体介绍链接

int tolower ( int c );
//C语言规定参数和返回类型是int类型:是因为在字符在内存中存储的是整型(ASCII码),并且char类型小范围数据可以正常传给int类型的大范围数据。
#include <stdio.h>
#include <ctype.h>

int main()
{
	char arr1[10] = { 0 };
	scanf("%[^\n]s", arr1);//[^\n]的意思是一直读取到\n才停止(不包括\n)
	int i = 0;
	while (arr1[i++] = toupper(arr1[i]))
	{
		;
	}
	printf("%s\n", arr1);
	return 0;
}

2. 2 toupper - 小写字母转大写字母

具体介绍链接

int tolower ( int c );
#include <stdio.h>
#include <ctype.h>

int main()
{
	char arr2[10] = { 0 };
	int i = 0;
	//gets(arr2);
	int ch = 0;
	while ((ch = getchar())!= '\n')//getchar的返回类型是整型
	{
		arr2[i++] = (char)ch;//(char)不写也行
	}

	i = 0;
	while (arr2[i++] = tolower(arr2[i]))
	{
		;
	}
	printf("%s\n", arr2);
	return 0;
}

总结

这篇文章我们一起学习了字符函数。
感谢大家的阅读,大家一起进步!如果有错误的地方,可以在评论区指正。

点赞收藏加关注,C语言学习不迷路!
图片来源于网络

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值