当前位置: 首页 > news >正文

解锁 C 语言字符函数密码,开启高效编程之路

文章目录

  • 一、字符函数的构成
  • 二、字符函数的分类
    • 1、字符分类函数
      • 1、`isalnum`函数
      • 2、`isalpha`函数
      • 3、`isdigit`函数
      • 4、`islower`函数
      • 5、`isupper`函数
      • 6、`ispunct`函数
      • 7、`isspace`函数
      • 8、`iscntrl`函数
      • 9、`isxdigit`函数
      • 10、`isgraph`函数
      • 11、`isprint`函数
    • 2、字符转换函数
  • 三、字符函数的应用

一、字符函数的构成

  • 头文件包含:在C语言中,许多字符函数都需要包含<ctype.h>头文件。这个头文件包含了一系列用于处理字符的函数原型声明。例如,#include <ctype.h>是使用字符函数的常见开头步骤。
  • 函数参数和返回值:字符函数通常以单个字符作为参数,返回值根据函数的功能而定。例如,int isalpha(int c)函数接受一个整数参数c(实际上是一个字符的ASCII码值),如果c是一个字母(大写或小写),则返回一个非零值(真),否则返回0(假)。

二、字符函数的分类

1、字符分类函数

1、isalnum函数

  • 作用:用于判断一个字符是否为字母或数字。字母包括大写字母(A - Z)和小写字母(a - z),数字是0 - 9
  • 函数原型int isalnum(int c);,其中c是要测试的字符(以ASCII码值的形式传递)。
  • 返回值:如果c是字母或数字,返回非零值(在C语言中,非零值表示真);如果c不是字母或数字,返回0(表示假)。
  • 示例代码
    #include <stdio.h>
    #include <ctype.h>
    int main()
    {char ch1 = 'A';char ch2 = '7';char ch3 = '$';if (isalnum(ch1)){printf("%c是字母或数字\n", ch1);}if (isalnum(ch2)){printf("%c是字母或数字\n", ch2);}if (!isalnum(ch3)){printf("%c不是字母或数字\n", ch3);}return 0;
    }
    
    输出结果为:
    A是字母或数字
    7是字母或数字
    $不是字母或数字
    

2、isalpha函数

  • 作用:专门用于判断一个字符是否为字母,包括大写字母(A - Z)和小写字母(a - z)。
  • 函数原型int isalpha(int c);
  • 返回值:如果c是字母,返回非零值;如果c不是字母,返回0。
  • 示例代码
    #include <stdio.h>
    #include <ctype.h>
    int main()
    {char ch1 = 'b';char ch2 = '9';if (isalpha(ch1)){printf("%c是字母\n", ch1);}if (!isalpha(ch2)){printf("%c不是字母\n", ch2);}return 0;
    }
    
    输出结果为:
    b是字母
    9不是字母
    

3、isdigit函数

  • 作用:判断一个字符是否为数字,即0 - 9
  • 函数原型int isdigit(int c);
  • 返回值:如果c是数字,返回非零值;如果c不是数字,返回0。
  • 示例代码
    #include <stdio.h>
    #include <ctype.h>
    int main()
    {char ch1 = '4';char ch2 = 'a';if (isdigit(ch1)){printf("%c是数字\n", ch1);}if (!isdigit(ch2)){printf("%c不是数字\n", ch2);}return 0;
    }
    
    输出结果为:
    4是数字
    a不是数字
    

4、islower函数

  • 作用:用于判断一个字符是否为小写字母,范围是a - z
  • 函数原型int islower(int c);
  • 返回值:如果c是小写字母,返回非零值;如果c不是小写字母,返回0。
  • 示例代码
    #include <stdio.h>
    #include <ctype.h>
    int main()
    {char ch1 = 'm';char ch2 = 'N';if (islower(ch1)){printf("%c是小写字母\n", ch1);}if (!islower(ch2)){printf("%c不是小写字母\n", ch2);}return 0;
    }
    
    输出结果为:
    m是小写字母
    N不是小写字母
    

5、isupper函数

  • 作用:判断一个字符是否为大写字母,范围是A - Z
  • 函数原型int isupper(int c);
  • 返回值:如果c是大写字母,返回非零值;如果c不是大写字母,返回0。
  • 示例代码
    #include <stdio.h>
    #include <ctype.h>
    int main()
    {char ch1 = 'Q';char ch2 = 'r';if (isupper(ch1)){printf("%c是大写字母\n", ch1);}if (!isupper(ch2)){printf("%c不是大写字母\n", ch2);}return 0;
    }
    
    输出结果为:
    Q是大写字母
    r不是大写字母
    

6、ispunct函数

  • 作用:用于判断一个字符是否为标点符号。标点符号包括各种非字母数字且有特定语法功能的字符,如!@#$%^&*()-+={}[]:;'"<>?/|\~等。
  • 函数原型int ispunct(int c);
  • 返回值:如果c是标点符号,返回非零值;如果c不是标点符号,返回0。
  • 示例代码
    #include <stdio.h>
    #include <ctype.h>
    int main()
    {char ch1 = ';';char ch2 = 'A';if (ispunct(ch1)){printf("%c是标点符号\n", ch1);}if (!ispunct(ch2)){printf("%c不是标点符号\n", ch2);}return 0;
    }
    
    输出结果为:
    ;是标点符号
    A不是标点符号
    

7、isspace函数

  • 作用:判断一个字符是否为空白字符。空白字符包括空格(' ')、制表符('\t')、换行符('\n')、回车符('\r')、垂直制表符('\v')和换页符('\f')。
  • 函数原型int isspace(int c);
  • 返回值:如果c是空白字符,返回非零值;如果c不是空白字符,返回0。
  • 示例代码
    #include <stdio.h>
    #include <ctype.h>
    int main()
    {char ch1 = '\n';char ch2 = 'a';if (isspace(ch1)){printf("%c是空白字符\n", ch1);}if (!isspace(ch2)){printf("%c不是空白字符\n", ch2);}return 0;
    }
    
    输出结果为:
    是空白字符
    a不是空白字符
    

8、iscntrl函数

  • 作用:用于判断一个字符是否为控制字符。控制字符是ASCII码值在0 - 31和127的字符,这些字符主要用于控制设备(如打印机、终端等)执行特定的操作,例如换行(\n)、回车(\r)等也属于控制字符,但要注意空格(' ')不是控制字符。
  • 函数原型int iscntrl(int c);,这里c是要测试的字符(以ASCII码值的形式传递)。
  • 返回值:如果c是控制字符,返回非零值;如果c不是控制字符,返回0。
  • 示例代码
    #include <stdio.h>
    #include <ctype.h>
    int main()
    {char ch1 = '\n';char ch2 = 'A';if (iscntrl(ch1)){printf("%c是控制字符\n", ch1);}if (!iscntrl(ch2)){printf("%c不是控制字符\n", ch2);}return 0;
    }
    
    输出结果为:
    是控制字符
    A不是控制字符
    

9、isxdigit函数

  • 作用:判断一个字符是否为十六进制数字字符。十六进制数字包括0 - 9、A - F(或a - f)。
  • 函数原型int isxdigit(int c);
  • 返回值:如果c是十六进制数字字符,返回非零值;如果c不是十六进制数字字符,返回0。
  • 示例代码
    #include <stdio.h>
    #include <ctype.h>
    int main()
    {char ch1 = 'F';char ch2 = 'G';if (isxdigit(ch1)){printf("%c是十六进制数字字符\n", ch1);}if (!isxdigit(ch2)){printf("%c不是十六进制数字字符\n", ch2);}return 0;
    }
    
    输出结果为:
    F是十六进制数字字符
    G不是十六进制数字字符
    

10、isgraph函数

  • 作用:用于判断一个字符是否为可打印字符(除空格外)。可打印字符的ASCII码值范围通常是33 - 126。
  • 函数原型int isgraph(int c);
  • 返回值:如果c是可打印字符(非空格),返回非零值;如果c不是可打印字符(非空格),返回0。
  • 示例代码
    #include <stdio.h>
    #include <ctype.h>
    int main()
    {char ch1 = '!';char ch2 = ' ';if (isgraph(ch1)){printf("%c是可打印字符(非空格)\n", ch1);}if (!isgraph(ch2)){printf("%c不是可打印字符(非空格)\n", ch2);}return 0;
    }
    

输出结果为:

 ```
!是可打印字符(非空格)不是可打印字符(非空格)```

11、isprint函数

  • 作用:判断一个字符是否为可打印字符,包括空格。可打印字符的ASCII码值范围通常是32 - 126。
  • 函数原型int isprint(int c);
  • 返回值:如果c是可打印字符(包括空格),返回非零值;如果c不是可打印字符(包括空格),返回0。
  • 示例代码
    #include <stdio.h>
    #include <ctype.h>
    int main()
    {char ch1 = ' ';char ch2 = '\n';if (isprint(ch1)){printf("%c是可打印字符(包括空格)\n", ch1);}if (!isprint(ch2)){printf("%c不是可打印字符(包括空格)\n", ch2);}return 0;
    }
    
    输出结果为:
    是可打印字符(包括空格)
    不是可打印字符(包括空格)
    

2、字符转换函数

 - **功能**:将字符从一种形式转换为另一种形式。- **举例**:- `tolower(c)`:将大写字母`c`转换为小写字母。如果`c`不是大写字母,则返回`c`本身。- 例如,`char ch = 'A'; ch = tolower(ch);`之后,`ch`的值变为`'a'`。- `toupper(c)`:与`tolower`相反,将小写字母转换为大写字母。- 例如,`char ch = 'b'; ch = toupper(ch);`后,`ch`的值变为`'B'`。

三、字符函数的应用

  • 数据验证

    • 举例:在用户输入密码的程序中,可以使用isdigitisalpha函数来验证密码是否包含字母和数字。
      #include <stdio.h>
      #include <ctype.h>
      int main()
      {char password[20];printf("请输入密码:");scanf("%s", password);int hasAlpha = 0, hasDigit = 0;for (int i = 0; password[i]!= '\0'; i++){if (isalpha(password[i])){hasAlpha = 1;}if (isdigit(password[i])){hasDigit = 1;}}if (hasAlpha && hasDigit){printf("密码格式正确\n");}else{printf("密码必须包含字母和数字\n");}return 0;
      }
      
  • 文本处理

    • 举例:将一段文本中的所有大写字母转换为小写字母。
      #include <stdio.h>
      #include <ctype.h>
      int main()
      {char text[] = "Hello, WORLD!";for (int i = 0; text[i]!= '\0'; i++){text[i] = tolower(text[i]);}printf("%s\n", text);return 0;
      }
      
      输出结果为“hello, world!”。
  • 字符加密与解密(简单示例)

    • 举例:可以使用字符转换函数进行简单的加密,比如将文本中的每个字母向后移动一位(凯撒密码的简单形式)。
      #include <stdio.h>
      #include <ctype.h>
      int main()
      {char message[] = "abc";for (int i = 0; message[i]!= '\0'; i++){if (isalpha(message[i])){message[i] = toupper(message[i]);message[i] = ((message[i] - 'A') + 1) % 26 + 'A';}}printf("%s\n", message);return 0;
      }
      
      输出为“BCD”,这里将字母a转换为A后,按照凯撒密码的规则将其ASCII码值加1进行加密。

相关文章:

解锁 C 语言字符函数密码,开启高效编程之路

文章目录 一、字符函数的构成二、字符函数的分类1、字符分类函数1、isalnum函数2、isalpha函数3、isdigit函数4、islower函数5、isupper函数6、ispunct函数7、isspace函数8、iscntrl函数9、isxdigit函数10、isgraph函数11、isprint函数 2、字符转换函数 三、字符函数的应用 一、…...

LLM之RAG实战(五十一)| 使用python和Cypher解析PDF数据,并加载到Neo4j数据库

一、必备条件&#xff1a; python语言Neo4j数据库python库&#xff1a;neo4j、llmsherpa、glob、dotenv 二、代码&#xff1a; from llmsherpa.readers import LayoutPDFReaderfrom neo4j import GraphDatabaseimport uuidimport hashlibimport osimport globfrom datetime …...

力扣-数组-01两数之和

解析 遍历i和第i1&#xff0c;两个for循环查就可以&#xff0c;时间复杂度是 代码 class Solution { public:vector<int> twoSum(vector<int>& nums, int target) {vector<int> ansewer;bool flag false;for(int i 0;i < nums.size(); i){for(in…...

Flutter中的网络请求图片存储为缓存,与定制删除本地缓存

Flutter中的网络请求图片存储为缓存&#xff0c;与定制删除本地缓存 1&#xff1a;封装请求图片函数 2&#xff1a;访问的图片都会转为本地缓存&#xff0c;当相同的请求url&#xff0c;会在本地调用图片 3&#xff1a;本地缓存管理【windows与andriod已经测试】【有页面】【有…...

保障移动应用安全:多层次安全策略应对新兴威胁

在数字化时代&#xff0c;移动应用的安全问题变得越来越重要。随着网络威胁的不断升级&#xff0c;确保移动应用的安全性不仅是保护敏感数据的关键&#xff0c;也是维护用户信任的基础。为了应对复杂的安全挑战&#xff0c;企业必须采取先进的技术和多层次的安全策略&#xff0…...

【Linux】函数

一、函数 1、创建函数 如果定义了同名函数&#xff0c;则新定义的函数就会覆盖原先的定义的函数&#xff0c;而且在运行时不会报错。 创建函数的语法&#xff1a; 方法1&#xff1a;使用关键字function function name { commands } shell脚本中的函数名不能重复 方法2&#x…...

Maven中管理SNAPSHOT版本含义及作用

在开发过程中突然产生了一个疑问&#xff1a;IDEA中 maven deploy的依赖包的版本号,比如 1.0.0-SNAPSHOT是在哪配置的&#xff1f;在远程仓库中的版本和这个有关系吗 &#xff1f; 在 Maven 中&#xff0c;-SNAPSHOT 后缀是用于标识项目版本为快照&#xff08;Snapshot&#xf…...

win10 VS2019上libtorch库配置过程

win10 VS2019上libtorch库配置过程 0 引言1 获取libtorch2 在VS上配置使用libtorch库3 结语 0 引言 &#x1f4bb;&#x1f4bb;AI一下&#x1f4bb;&#x1f4bb;   libtorch库是一个用于深度学习的C库&#xff0c;是PyTorch的官方C前端。它提供了用于构建和训练深度学习模…...

【计算机网络】课程 实验二 交换机基本配置和VLAN 间路由实现

实验二 交换机基本配置和VLAN 间路由实现 一、实验目的 1&#xff0e;了解交换机的管理方式。 2&#xff0e;掌握通过Console接口对交换机进行配置的方法。 3&#xff0e;掌握交换机命令行各种模式的区别&#xff0c;能够使用各种帮助信息以及命令进行基本的配置。 4&…...

Oracle Dataguard(主库为单节点)配置详解(4):将主库复制到备库并启动同步

Oracle Dataguard&#xff08;主库为单节点&#xff09;配置详解&#xff08;4&#xff09;&#xff1a;将主库复制到备库并启动同步 目录 Oracle Dataguard&#xff08;主库为单节点&#xff09;配置详解&#xff08;4&#xff09;&#xff1a;将主库复制到备库并启动同步一、…...

OpenCL(贰):浅析CL内核程序接口函数

目录 1.前言 2.获取平台信息 1.cl_int类型 2.cl_platform_id类型 3.clGetPlatformIDs()&#xff1a;查询系统OpenCL平台数量或获取具体的平台信息 4.clGetPlatformInfo()&#xff1a;查询指定OpenCL平台的信息&#xff0c;例如平台名称、供应商、版本等 3.设置OpenCL上下文…...

Leetcode 3407. Substring Matching Pattern

Leetcode 3407. Substring Matching Pattern 1. 解题思路2. 代码实现 题目链接&#xff1a;3407. Substring Matching Pattern 1. 解题思路 这一题是一道leetcode easy的题目&#xff0c;照说应该没啥的&#xff0c;不过实际我做的时候在这里卡了一下&#xff0c;所以还是拿…...

学英语学压测:02jmeter组件-测试计划和线程组ramp-up参数的作用

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#xff1a;先看关键单词&#xff0c;再看英文&#xff0c;最后看中文总结&#xff0c;再回头看一遍英文原文&#xff0c;效果更佳&#xff01;&#xff01; 关键词 Functional Testing功能测试[ˈfʌŋkʃənəl ˈtɛstɪŋ]Sample样…...

Vue笔记-001-声明式渲染

https://cn.vuejs.org/tutorial/#step-2https://cn.vuejs.org/tutorial/#step-2 Vue 单文件组件 (Single-File Component&#xff0c;缩写为 SFC) 单文件组件是一种可复用的代码组织形式&#xff0c;它将从属于同一个组件的 HTML、CSS 和 JavaScript 封装在使用 .vue 后缀的文件…...

26考研资料分享 百度网盘

26考研资料分享考研资料合集 百度网盘&#xff08;仅供参考学习&#xff09; 基础班&#xff1a; 通过网盘分享的文件&#xff1a;2026【考研英语】等3个文件 链接: https://pan.baidu.com/s/1Q6rvKop3sWiL9zBHs87kAQ?pwd5qnn 提取码: 5qnn --来自百度网盘超级会员v3的分享…...

.NET 8 + Ocelot + Consul 实现代理网关、服务发现

.NET 8 Ocelot Consul 实现代理网关、服务发现 本文环境&#xff1a;.NET 8 Ocelot 23.4.2 Consul 1.7.14.6 1 实现网关 分别创建3个WebApi工程&#xff1a;OcelotGw、TestGwAService、TestGwBService&#xff1b;在OcelotGw工程中安装Ocelot包&#xff1a;Install-Packag…...

使用 Nginx 轻松处理跨域请求(CORS)

使用 Nginx 轻松处理跨域请求&#xff08;CORS&#xff09; 在现代 Web 开发中&#xff0c;跨域资源共享&#xff08;CORS&#xff09;是一种重要的机制&#xff0c;用于解决浏览器的同源策略限制。CORS 允许服务器声明哪些来源可以访问其资源&#xff0c;从而确保安全性与可用…...

【LeetCode Hot100 二分查找】搜索插入位置、搜索二维矩阵、搜索旋转排序数组、寻找两个正序数组的中位数

二分查找 搜索插入位置搜索二维矩阵在排序数组中查找元素的第一个和最后一个位置寻找旋转排序数组中的最小值搜索旋转排序数组寻找两个正序数组的中位数&#xff08;hard&#xff09; 搜索插入位置 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并…...

使用MediaPipe Face Mesh 面部动作检测

一、技术选型 OpenCV&#xff08;Open Source Computer Vision Library&#xff09; 用于视频流捕捉、图像预处理和基本图像处理操作。 MediaPipe 提供高效的人脸检测与关键点提取功能&#xff08;Face Mesh&#xff09;。 Python 作为后端开发语言&#xff0c;整合上述库进行…...

【Vue】<script setup>和 <script>区别是什么?在使用时的写法区别?

<script setup> 是 Vue 3 引入的一种新的脚本语法&#xff0c;它提供了一种更简洁和声明式的方式来编写组件逻辑。它是为了解决传统 <script> 标签在 Vue 单文件组件&#xff08;SFC&#xff09;中的一些局限性而设计的。 <script setup> 与 <script>…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 &#xff08;一&#xff09;实时滤波与参数调整 基础滤波操作 60Hz 工频滤波&#xff1a;勾选界面右侧 “60Hz” 复选框&#xff0c;可有效抑制电网干扰&#xff08;适用于北美地区&#xff0c;欧洲用户可调整为 50Hz&#xff09;。 平滑处理&…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南&#xff1a;从入门到实战 一、Grunt 是什么&#xff1f; Grunt是一个基于 Node.js 的前端自动化任务运行器&#xff0c;主要用于自动化执行项目开发中重复性高的任务&#xff0c;例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

PostgreSQL——环境搭建

一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在&#xff0…...

华为OD机试-最短木板长度-二分法(A卷,100分)

此题是一个最大化最小值的典型例题&#xff0c; 因为搜索范围是有界的&#xff0c;上界最大木板长度补充的全部木料长度&#xff0c;下界最小木板长度&#xff1b; 即left0,right10^6; 我们可以设置一个候选值x(mid)&#xff0c;将木板的长度全部都补充到x&#xff0c;如果成功…...

嵌入式学习之系统编程(九)OSI模型、TCP/IP模型、UDP协议网络相关编程(6.3)

目录 一、网络编程--OSI模型 二、网络编程--TCP/IP模型 三、网络接口 四、UDP网络相关编程及主要函数 ​编辑​编辑 UDP的特征 socke函数 bind函数 recvfrom函数&#xff08;接收函数&#xff09; sendto函数&#xff08;发送函数&#xff09; 五、网络编程之 UDP 用…...

恶补电源:1.电桥

一、元器件的选择 搜索并选择电桥&#xff0c;再multisim中选择FWB&#xff0c;就有各种型号的电桥: 电桥是用来干嘛的呢&#xff1f; 它是一个由四个二极管搭成的“桥梁”形状的电路&#xff0c;用来把交流电&#xff08;AC&#xff09;变成直流电&#xff08;DC&#xff09;。…...