C语言——字符函数

前言

字符函数是C语言中专门用来处理字符的函数,再C语言中,我们有时需要大量的处理有关字符的问题,所以字符函数就由此应运而生,接下来我来为大家简单介绍一下字符函数。

一.字符分类函数

函数如果它的参数满足下列条件就返回真
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任何图形字符
isprint任何可打印字符,包括图形字符和空白字符 

接下来,我会举几个字符分类函数的例子,帮助大家理解。

1.iscntrl函数

iscntrl函数的作用是识别控制字符,传来的参数如果是控制字符则返回真,即非0值,否则返回0

//int iscntrl(int c)      
//只要参数是控制字符,就返回非0值,否之返回0
//实际上传给iscntrl的是该字符的ASCII码值int main()
{int ret1 = iscntrl('\t');//'\t'是控制字符,所以返回非0值int ret2 = iscntrl('x');//'x'不是控制字符,所以返回0printf("%d %d\n", ret1,ret2);return 0;
}

结果:

2.isspace函数

isspace函数的作用是识别空白字符,只要是空白字符就返回真,非0;否则返回假,0


 

//int isspace(int c)       只要参数是空白字符就返回非0值,否之返回0
int main()
{int ret1 = isspace('\n');//'\n'换行符是空白字符,所以会返回非0值int ret2 = isspace('a');//'a'是可打印字符,不是空白字符,所以返回0printf("%d %d\n", ret1,ret2);return 0;
}

结果为:

3.isdigit函数

isdigit是识别数字字符函数,只要传来的字符参数属于0~9,就返回非0值,否则返回0

//int isdigit(int c)   参数属于0~9,则返回非0值,不属于返回0
int main()
{int ret1 = isdigit('0');int ret2 = isdigit('z');printf("%d %d\n", ret1, ret2);return 0;
}

结果为:

4.字符分类函数小结

我在上面给大家介绍了三个字符分类函数的用法,其他的函数用法与之相似,大家可自行验证。下来,我利用islower函数来实现将小写字母转换为大写字母的代码。

#include <stdio.h>
#include <ctype.h>
#include <string.h>int main()
{char arr[] = "i love china";size_t len = strlen(arr);int i = 0;for (i = 0; i < len; i++){if (islower(arr[i]))//如果是小写字母则返回非0,并转化为大写字母{arr[i] -= 32;}}printf("%s", arr);return 0;
}

isupper与islower函数功能相似,前者识别大写字母,后者识别小写字母。使用前者可以实现将大写字母转换为小写字母。

#include <stdio.h>
#include <ctype.h>
#include <string.h>int main()
{char arr[] = "I LOVE CHINA FOREVER";size_t len = strlen(arr);int i = 0;for (i = 0; i < len; i++){if (isupper(arr[i]))//如果是大写字母则返回非0,并转化为小写字母{arr[i] += 32;}}printf("%s", arr);return 0;
}

除此之外,我们可以将这两者联系起来,实现大小写的互相转化。

二.字符转换函数

1.tolower函数

从函数名来分析,我们就可以的值得知,该函数可以将传进去的参数转换为小写字母,如果传进去的本来就是小写字母,则不变。我们上面利用isupper函数实现了将大写字母转化为小写字母,下来我们再利用tolower函数实现将大写字母转化为小写字母。

#include <stdio.h>
#include <ctype.h>
#include <string.h>int main()
{char arr[] = "HELLO WORLD";size_t len = strlen(arr);int i = 0;for (i = 0; i < len; i++){if (isupper(arr[i]))//判断是否为大写字母{arr[i] = tolower(arr[i]);//将大写字母转化为小写字母,相当于完成了+32的操作}}printf("%s\n", arr);return 0;
}

有的人会问:既然tolower可以将大写转化为小写,小写不受影响,那为什么不直接将所有字符都传给该函数?这就涉及到效率的问题,如果每次都调用该函数会导致程序效率降低,所以可以先进行判断,后将判断为真的字符转化为小写字母。

2.toupper函数

该函数与tolower函数异曲同工,该函数是将小写字母转化为大写字母,如果本来就是大写字母则不发生改变。我们现在利用该函数实现将小写字母转化为大写字母。

//toupper函数
//将传进去的参数转化为大写字母,如果本来就是大写字母则不改变
int main()
{char arr[] = "hello world";size_t len = strlen(arr);int i = 0;for (i = 0; i < len; i++){if (islower(arr[i]))//判断是否为大写字母{arr[i] = toupper(arr[i]);//将小写字母转化为大写字母,相当于完成了-32的操作}}printf("%s\n", arr);return 0;
}

总结

我们在日常生活中经常会遇到需要处理字符的问题,有了这些函数就可以方便我们对字符的操作,之前我们判断其是不是小写字母(arr[i]>='a'&&arr[i]<='z'),这样非常麻烦,有了这些函数之后就可以非常方便的判断是不是我们需要的字符。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/284228.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据之王国:解析Facebook的大数据应用

引言 作为全球最大的社交媒体平台之一&#xff0c;Facebook拥有庞大的用户群体和海量的数据资源。这些数据不仅包括用户的个人信息和社交行为&#xff0c;还涵盖了广告点击、浏览记录等多方面内容。Facebook通过巧妙地利用这些数据&#xff0c;构建了强大的大数据应用系统&…

AbstractQueuedSynchronizer 独占式源码阅读

概述 ● 一个int成员变量 state 表示同步状态 ● 通过内置的FIFO队列来完成资源获取线程的排队工作 属性 AbstractQueuedSynchronizer属性 /*** 同步队列的头节点 */private transient volatile Node head;/*** 同步队列尾节点&#xff0c;enq 加入*/private transient …

政安晨:【深度学习实践】【使用 TensorFlow 和 Keras 为结构化数据构建和训练神经网络】(二)—— 深度神经网络

政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras实战演绎 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff01; 概述 深度神经网络&#xff08;Deep Neural Network…

web前端之行为验证码、不同设备和屏幕尺寸呈现不同大小、元素宽度根据视口宽度进行调整、元素或图片裁剪、图片验证码

MENU 前言版本一(htmlJScss)版本二(htmlJScsscanvas) 前言 1、版本一的样式比较齐全&#xff1b; 2、版本二的JS逻辑和功能效果比较完善&#xff0c;且是别人的代码&#xff0c;后续会对样式进行完善。[Gitee | 哔哩哔哩]&#xff1b; 3、两个版本各有千秋&#xff0c;主要学习…

HTTPS协议的工作原理:保护网络通信的安全盾牌

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

【深度学习】四种天气分类 模版函数 从0到1手敲版本

引入该引入的库 import torch import torch.nn as nn import matplotlib.pyplot as plt import torch.nn.functional as F import torchvision import torch.optim as optim %matplotlib inline import os import shutil import glob os.environ["KMP_DUPLICATE_LIB_OK&q…

SQLiteC/C++接口详细介绍sqlite3_stmt类(六)

返回&#xff1a;SQLite—系列文章目录 上一篇&#xff1a;SQLiteC/C接口详细介绍sqlite3_stmt类&#xff08;五&#xff09; 下一篇&#xff1a; SQLiteC/C接口详细介绍sqlite3_stmt类&#xff08;七&#xff09; 17. sqlite3_clear_bindings函数 sqlite3_clear_bindings函…

微服务高级篇(一):微服务保护+Sentinel

文章目录 一、初识Sentinel1.1 雪崩问题及解决方案1.2 微服务保护技术对比1.3 Sentinel介绍与安装1.4 微服务整合Sentinel 二、Sentinel的流量控制三、Sentinel的隔离与降级四、Sentinel的授权规则五、规则持久化5.1 规则管理模式【原始模式、pull模式、push模式】5.2 实现push…

Spark-Scala语言实战(4)

在之前的文章中&#xff0c;我们学习了如何在scala中定义无参&#xff0c;带参以及匿名函数。想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请留下你宝贵的点赞&#xff0c;谢谢。 Spark-Scala语言…

基础:TCP四次挥手做了什么,为什么要挥手?

1. TCP 四次挥手在做些什么 1. 第一次挥手 &#xff1a; 1&#xff09;挥手作用&#xff1a;主机1发送指令告诉主机2&#xff0c;我没有数据发送给你了。 2&#xff09;数据处理&#xff1a;主机1&#xff08;可以是客户端&#xff0c;也可以是服务端&#xff09;&#xff0c…

LM studio使用gemmar聊天小试

通过LM studio可以方便的使用各种模型&#xff0c;使用LM提供的chat界面或者是使用python代码。 试试代码 在windows下使用python简单一试&#xff0c;例子直接复制LM界面上的代码&#xff1a; 用pip安装 openai包在LM界面 Start Server 需要安装 openai包。 本地电脑是I7…

图像处理ASIC设计方法 笔记12 图像旋转ASIC中心控制器状态机

P109 1 流水线图像旋转ASIC整体架构 中心控制器负责各个模块的状态控制和数据调度,接收到外部启动信号后,进人芯片初始化阶段,片上FIFO接收外部输入的图像旋转参数、接收完毕后,再利用接收到的旋转角度到查找表中找到对应的正弦和正切值。 中心控制器将接收到的行列信息…

计算机网络——26通用转发和SDN

通用转发和SDN 网络层功能&#xff1a; 转发&#xff1a; 对于从某个端口 到来的分组转发到合适的 输出端口路由&#xff1a; 决定分组从源端 到目标端的路径 网络层 传统路由器的功能 每个路由器(Per Route)的控制平面 &#xff08;传统&#xff09; 每个路由器上都有实…

阿里云原生:如何熟悉一个系统

原文地址:https://mp.weixin.qq.com/s/J8eK-qRMkmHEQZ_dVts9aQ?poc_tokenHMA-_mWjfcDmGVW6hXX1xEDDvuJPE3pL9-8uSlyY 导读&#xff1a;本文总结了熟悉系统主要分三部分&#xff1a;业务学习、技术学习、实战。每部分会梳理一些在学习过程中需要解答的问题&#xff0c;这些问题…

linux下线程分离属性

linux下线程分离属性 一、线程的属性---分离属性二、线程属性设置2.1 线程创建前设置分离属性2.2 线程创建后设置分离属性 一、线程的属性—分离属性 什么是分离属性&#xff1f; 首先分离属性是线程的一个属性&#xff0c;有了分离属性的线程&#xff0c;不需要别的线程去接合…

STM32---DHT11温湿度传感器与BH1750FVI光照传感器(HAL库、含源码)

写在前面&#xff1a;本节我们学习使用两个常见的传感器模块&#xff0c;分别为DHT11温湿度传感器以及BH1750FVI光照传感器,这两种传感器在对于环境监测中具有十分重要的作用&#xff0c;因为其使用简单方便&#xff0c;所以经常被用于STM32的项目之中。今天将使用分享给大家&a…

相交链表:寻找链表的公共节点

目录 一、公共节点 二、题目 三、思路 四、代码 五、代码解析 1.计算长度 2.等长处理 3.判断 六、注意点 1.leetcode的尿性 2.仔细观察样例 3.经验总结 一、公共节点 链表不会像两直线相交一样&#xff0c;相交之后再分开。 由于单链表只有一个next指针&#xff0…

STM32 CAN的工作模式

STM32 CAN的工作模式 正常模式 正常模式下就是一个正常的CAN节点&#xff0c;可以向总线发送数据和接收数据。 静默模式 静默模式下&#xff0c;它自己的输出端的逻辑0数据会直接传输到它自己的输入端&#xff0c;逻辑1可以被发送到总线&#xff0c;所以它不能向总线发送显性…

FANUC机器人零点标定的基本步骤(出厂数据)

FANUC机器人零点标定的基本步骤(出厂数据) FANUC 零点数据存在问题的机器人通常会出现以下几种报警: (1)SRVO-062报警 - 脉冲编码器数据丢失,机器人完全不能动,具体消除方法可参考以下链接中的内容: FANUC机器人SRVO-062报警原因分析及处理对策 (2)SRVO-075报警 -…

北京中科富海低温科技有限公司确认出席2024第三届中国氢能国际峰会

会议背景 随着全球对清洁能源的迫切需求&#xff0c;氢能能源转型、工业应用、交通运输等方面具有广阔前景&#xff0c;氢能也成为应对气候变化的重要解决方案。根据德勤的报告显示&#xff0c;到2050年&#xff0c;绿色氢能将有1.4万亿美元市场。氢能产业的各环节的关键技术突…