【字符函数】

✨博客主页:小钱编程成长记
🎈博客专栏:进阶C语言
🎈相关博文:字符串函数(一)、字符串函数(二)
字符函数
- 字符函数
- 1.字符分类函数
- 1.1 iscntrl - 判断是否是控制字符
- 1.2 isspace - 判断是否是空白字符
- 1.3 isdigit - 判断是否是十进制数字0~9
- 1.4 isxdigit - 判断是否是十六进制数字
- 1.5 islower - 判断是否是小写字母
- 1.6 isupper - 判断是否是大写字母
- 1.7 isalph - 判断是否是字母
- 1.8 isalnum - 判断是否是字母或数字
- 1.9 ispunct - 判断是否是标点符号
- 1.10 isgraph - 判断是否是任何图形字符(除了控制字符和空格)
- 1.11 isprint - 判断是否是任何可打印字符
- 2.字符转换函数
- 2.1 tolower - 大写字母转小写字母
- 2. 2 toupper - 小写字母转大写字母
- 总结
字符函数
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~9printf("%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~9printf("%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语言学习不迷路!

相关文章:
【字符函数】
✨博客主页:小钱编程成长记 🎈博客专栏:进阶C语言 🎈相关博文:字符串函数(一)、字符串函数(二) 字符函数 字符函数1.字符分类函数1.1 iscntrl - 判断是否是控制字符1.2 i…...
git创建与合并分支
文章目录 创建与合并分支分支管理的概念实际操作 解决冲突分支管理策略Bug分支Feature分支多人协作 创建与合并分支 分支管理的概念 分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码…...
【电子通识】USB TYPE-A 2.0/3.0连接器接口
基础知识 USB TYPE-A连接器又可称为USB-A,现在不少PC、PC周边、手机充电器等等都依然采用了这种扁平的矩形接口,是目前普及度最高的USB接口了。 USB-A亦有分为插头与插座。常见的USB-A数据线的A端就是插头,而充电器上的则是插座。插头和插座…...
org.apache.sshd的SshClient客户端 连接服务器执行命令 示例
引入依赖 <dependency><groupId>org.apache.sshd</groupId><artifactId>sshd-core</artifactId><version>2.9.1</version></dependency>示例代码,可以直接执行,也可以做替换命令、维护session等修改 p…...
STM32 裸机编程 03
MCU 启动和向量表 当 STM32F429 MCU 启动时,它会从 flash 存储区最前面的位置读取一个叫作“向量表”的东西。“向量表”的概念所有 ARM MCU 都通用,它是一个包含 32 位中断处理程序地址的数组。对于所有 ARM MCU,向量表前 16 个地址由 ARM …...
Python ‘list‘ object is not callable错误
我尝试着解决“TypeError: ‘list’ object is not callable”这个错误。在Python编程中,我有时会遇到这个错误。这个错误通常是由于我错误地尝试像函数一样调用一个列表对象。为了解决这个问题,我需要找出错误发生的具体位置,然后进行修正。…...
原生php 实现redis登录五次被禁,隔天再登陆
<?php /*** Created by PhpStorm.* User: finejade* Date: 2023-10-18* Time: 11:08*/ session_start();include_once(header.php); include_once(connect.php); include_once(common.php); include_once(redis.php); try {// 常量 用户错误次数记录define("USER_LOGI…...
24. Kernel 4.19环境下,Cilium网络仍然需要使用iptables
在设计这套容器集群服务时,我从原来的k3s架构中分离出一个问题,那就是容器网络插件应该选择哪个。因为我设计的目标是给服务器领域使用的容器引擎,所以我就不需要考虑太多边缘IOT设备的情况,直接拉满技能找了cilium。cilium借助内核ebpf技术的出现,让我看到了网络性能更好…...
java中的容器(集合),HashMap底层原理,ArrayList、LinkedList、Vector区别,hashMap加载因子0.75原因
一、java中的容器 集合主要分为Collection和Map两大接口;Collection集合的子接口有List、Set;List集合的实现类有ArrayList底层是数组、LinkedList底层是双向非循环列表、Vector;Set集合的实现类有HashSet、TreeSet;Map集合的实现…...
Linux Server 终止后立即重启报错 bind error: Address already in use
先启动Server,再启动Client,然后使用CtrlC关闭Server,马上再运行Server,会得到以下结果: bind error: Address already in use这是因为,虽然Server的应用程序终止了,但TCP协议层的连接并没有完全…...
【Python 千题 —— 基础篇】分解数据
题目描述 题目描述 编写一个程序,输入一个类似 “233,234,235” 格式的字符串,然后提取字符串中的数字,将这些数字存储在列表中,并输出该列表。在这里,我们使用 eval 函数来解析字符串中的数字。 输入描述 输入一个…...
【C++】C++11新特性之右值引用与移动语义
文章目录 一、左值与左值引用二、右值与右值引用三、 左值引用与右值引用比较四、右值引用使用场景和意义1.左值引用的短板2.移动构造和移动赋值3.STL中右值引用的使用 五、万能引用与完美转发1.万能引用2.完美转发 一、左值与左值引用 在C11之前,我们把数据分为常…...
家庭燃气表微信抄表识别系统
1.背景需求 目前家里燃气度数的读数上报,每个月在社区微信群里面将手机拍摄的燃气表读数截图(加住址信息水印),发到群里给抄表员。 2.总体设计 设计目标 功能一:手机上随时可以远程采集读数图片(自动加住…...
EF执行迁移时提示provider: SSL Provider, error: 0 - 证书链是由不受信任的颁发机构颁发的
ef在执行时提示provider: SSL Provider, error: 0 - 证书链是由不受信任的颁发机构颁发的。 只需要在数据库链接字符串后增加EncryptTrue;TrustServerCertificateTrue;即可 再次执行...
视频标注的两个主要方法
视频标注技术 单一图像法 在自动化工具面世之前,视频标注效率不高。各公司使用单一图像法提取视频中的所有帧,然后使用标准图像标注技术将它们作为图像来标注。在30fps的视频中,每分钟有1800帧。这个过程没有利用视频标注的优势,…...
学成在线第一天-项目介绍、项目的搭建、开发流程以及相关面试题
目录 一、项目介绍 二、项目搭建 三、开发流程 四、相关面试题 五、总结 一、项目介绍 背景 业务 技术 背景:首先是整个这个行业的背景 然后基于这个行业的背景引出当前项目的背景 业务:功能模块 功能业务流程 技术:整体架构&am…...
《数据结构与算法之美》读书笔记1
Java的学习 方法参数多态(向上和向下转型) 向上转型: class Text{public static void main(String[] args) {Animals people1 new NiuMa();people1.eat1();//调用继承后公共部分的方法,没重写调用没重写的,重写了调…...
接口测试经验合集
一 、接口测试常见问题 前景提要:由于本人测试小白,可能所遇问题都较为基础,测试小白可以参考 1.1 postman会报 connect ECONNREFUSED jemeter会报 org.apache.http.conn.HttpHostConnectException: Connect tofailed: Connection refus…...
Leetcode—2331.计算布尔二叉树的值【简单】
2023每日刷题(六) Leetcode—2331.计算布尔二叉树的值 递归实现代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/ bool evaluateTree(struct TreeNod…...
Java面试(基础篇)——解构Java常见的基础面试题 结合Java源码分析
fail-safe 和fail-fast机制 Fail-fast:快速失败 Fail-fast : 表示快速失败,在集合遍历过程中,一旦发现容器中的数据被修改了,会立刻抛出ConcurrentModificationException 异常,从而导致遍历失败 package …...
实战机器学习:如何用Python解决经典习题集
实战机器学习:如何用Python解决经典习题集 机器学习正从实验室走向产业界,成为解决实际问题的利器。但对于大多数学习者来说,理论知识与实践应用之间仍存在巨大鸿沟。本文将带你用Python代码攻克机器学习经典习题,从算法原理到代码…...
GNU Radio 3.8 OOT模块开发避坑指南:从gr_modtool到CMake编译的完整流程
GNU Radio 3.8 OOT模块开发深度排雷手册:从工具链配置到版本兼容性实战 在软件无线电(SDR)开发领域,GNU Radio作为开源标杆工具链,其Out-of-Tree(OOT)模块扩展机制为开发者提供了高度灵活性。本文将聚焦3.8版本下的OOT开发全流程,…...
PROJECT MOGFACE长文本理解效果展示:百页技术文档问答精度测评
PROJECT MOGFACE长文本理解效果展示:百页技术文档问答精度测评 最近在折腾一个项目,需要从一堆厚厚的技术文档里快速找到特定信息。几百页的PDF,光是翻一遍就得花上半天,更别说精准定位某个函数的具体参数或者某个概念的详细解释…...
别再只用数组了!用MATLAB结构体(struct)管理实验数据的5个实战技巧
别再只用数组了!用MATLAB结构体(struct)管理实验数据的5个实战技巧 在实验室里泡了三年后,我终于受够了那些散落在脚本各处的data1、data2变量,以及需要反复查阅注释才能理解的复杂元胞数组。直到有天看到隔壁工位的博…...
D4: 常见误区:管理者最容易踩的 5 个坑
文章目录 D4: 常见误区:管理者最容易踩的 5 个坑 🎯 为什么这个话题重要? 核心内容:管理者最容易踩的 5 个坑 坑 1:把 AI 当万能药,忽视基本功 坑 2:一刀切推行,忽视团队差异 坑 3:只看效率提升,忽视质量风险 坑 4:忽视安全与合规边界 坑 5:期待立竿见影,缺乏长期…...
Android车机蓝牙开发避坑指南:如何正确配置A2DP Sink与HFP Client模式(附源码修改点)
Android车机蓝牙音频接收端开发实战:A2DP Sink与HFP Client模式深度配置 在智能座舱和车载娱乐系统快速发展的今天,蓝牙音频接收功能已成为车机系统的标配能力。不同于手机作为音源端的常规场景,车机需要作为接收端(Sinkÿ…...
5个常见设计痛点,Bebas Neue开源字体一站式解决方案
5个常见设计痛点,Bebas Neue开源字体一站式解决方案 【免费下载链接】Bebas-Neue Bebas Neue font 项目地址: https://gitcode.com/gh_mirrors/be/Bebas-Neue Bebas Neue是一款完全免费开源的显示字体,专为标题、标语和大尺寸文字设计,…...
Linux命令:netstat
netstat 命令 基本介绍 netstat 命令用于显示网络状态,包括网络连接、路由表、接口统计等信息。它是 Linux 系统中常用的网络工具之一,用于监控网络连接和排查网络问题。 资料合集:https://pan.quark.cn/s/6fe3007c3e95、https://pan.quark.c…...
如何在按需导入类时动态执行其内部代码
本文介绍如何利用 Python 3.7 的 __getattr__ 钩子机制,实现“仅在显式导入某个类时才执行其初始化逻辑”,避免模块级类定义时的副作用触发。 本文介绍如何利用 python 3.7 的 __getattr__ 钩子机制,实现“仅在显式导入某个类时才执行其…...
如何快速掌握NIF文件编辑:面向游戏开发者的完整NifSkope指南
如何快速掌握NIF文件编辑:面向游戏开发者的完整NifSkope指南 【免费下载链接】nifskope A git repository for nifskope. 项目地址: https://gitcode.com/gh_mirrors/ni/nifskope NifSkope是一款强大的开源工具,专门用于打开和编辑NetImmerse文件…...
