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

news2025/1/7 23:54:33

文章目录

  • 一、字符函数的构成
  • 二、字符函数的分类
    • 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进行加密。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

R机器学习:神经网络算法的理解与实操,实例解析

神经网络算法是一种模仿生物神经网络&#xff08;尤其是人脑&#xff09;结构和功能的算法。它由大量相互连接的节点&#xff08;称为神经元&#xff09;组成&#xff0c;这些神经元组织成层&#xff0c;通过传递信号来处理信息。神经网络算法在机器学习、人工智能等领域中扮演…

Java(day4)

二维数组 静态初始化 动态初始化 练习 public class test1 {public static void main(String[]args){int arr[][]{{22,66,44},{77,33,88},{25,45,65},{11,66,99}};int sum0;for(int i0;i<arr.length;i){int a0;for(int j0;j<arr[i].length;j){sumarr[i][j];aarr[i][j];…

element-plus大版本一样,但是小版本不一样导致页面出bug

npm 的版本 node的版本 npm的源这些都一样&#xff0c;但是效果不一样 发现是element的包版本不一样导致的 2.9.1与2.8.1的源是不一样的&#xff0c;导致页面出bug;

【Docker】安装registry本地镜像库,开启Https功能

下载镜像 docker pull registry:2 需要启动https功能&#xff0c;就要生成服务端的自签名的证书和私钥&#xff0c;以及在docker客户端安装这个经过签名的证书。 第一步&#xff1a;生成公私钥信息&#xff0c;第二步&#xff0c;制作证书签名申请文件&#xff0c; 第三步&…

单片机-LED点阵实验

要将第一个点点亮&#xff0c;则 1 脚接高电平 a 脚接低电平&#xff0c;则第一个点就亮了&#xff1b;如果要将第一行点亮&#xff0c;则第 1 脚要接高电平&#xff0c;而&#xff08;a、b、c、d、e、f、g、h &#xff09;这些引脚接低电平&#xff0c;那么第一行就会点亮&…

PDFMathTranslate: Star13.8k,一款基于AI的PDF文档全文双语翻译PDF文档全文双语翻译,保留格式神器,你应该需要它

嗨&#xff0c;大家好&#xff0c;我是小华同学&#xff0c;关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法 PDFMathTranslate是一个开源项目&#xff0c;旨在为用户提供便捷的PDF科学论文翻译解决方案。它不仅能够翻译文本&#xff0c;还能保留公式、图表、目…

RockyLinux9配置静态ip地址教程

以往我们配置linux系统的ip地址是在 /etc/sysconfig/network-scripts/ifcfg-网卡名 配置文件中编辑的&#xff0c;详情请见 Rocky8.10配置网络和主机名教程_rocky8配置网络-CSDN博客 但是在RockyLinux9系统中弃用了以前的这种方式&#xff0c;改为了新的配置方式。下面我们介绍…

民宿酒店预订系统小程序+uniapp全开源+搭建教程

一.介绍 一.系统介绍 基于ThinkPHPuniappuView开发的多门店民宿酒店预订管理系统&#xff0c;快速部署属于自己民宿酒店的预订小程序&#xff0c;包含预订、退房、WIFI连接、吐槽、周边信息等功能。提供全部无加密源代码&#xff0c;支持私有化部署。 二.搭建环境 系统环境…

【C++数据结构——图】图的邻接矩阵和邻接表的存储(头歌实践教学平台习题)【合集】

目录&#x1f60b; 任务描述 相关知识 1. 带权有向图 2. 图的邻接矩阵 3. 图的邻接表 测试说明 通关代码 测试结果 任务描述 本关任务&#xff1a;编写一个程序实现图的邻接矩阵和邻接表的存储。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a; 带权有向图…

【数据挖掘】深度高斯过程

深度高斯过程&#xff08;Deep Gaussian Process, DGP&#xff09;是一种结合高斯过程&#xff08;Gaussian Process, GP&#xff09;和深度学习的模型&#xff0c;旨在将高斯过程的非参数灵活性与深度模型的分层特征学习能力相结合。它可以看作是高斯过程的深度扩展&#xff0…

【NLP 18、新词发现和TF·IDF】

目录 一、新词发现 1.新词发现的衡量标准 ① 内部稳固 ② 外部多变 2.示例 ① 初始化类 NewWordDetect ② 加载语料信息&#xff0c;并进行统计 ③ 统计指定长度的词频及其左右邻居字符词频 ④ 计算熵 ⑤ 计算左右熵 ​编辑 ⑥ 统计词长总数 ⑦ 计算互信息 ⑧ 计算每个词…

GitLab创建用户,设置访问SSH Key

继上一篇 Linux Red Hat 7.9 Server安装GitLab-CSDN博客 安装好gitlab&#xff0c;启用管理员root账号后&#xff0c;开始创建用户账户 1、创建用户账户 进入管理后台页面 点击 New User 输入用户名、邮箱等必填信息和登录密码 密码最小的8位&#xff0c;不然会不通过 拉到…

计算机网络--路由表的更新

一、方法 【计算机网络习题-RIP路由表更新-哔哩哔哩】 二、举个例子 例1 例2

C语言 数组编程练习

1.将数组A的内容和数组B中的内容进行交换。&#xff08;数组一样大&#xff09; 2.创建一个整形数组&#xff0c;完成对数组的操作 实现函数Init()初始化数组全为0 实现print()打印数组的每个元素 实现reverse()函数完成数组元素的逆置 //2.创建一个整形数组&#xff0c;完…

H7-TOOL固件2.27发布,新增加40多款芯片脱机烧录,含多款车轨芯片,发布LUA API手册,CAN助手增加负载率,错误状态信息检测

H7-TOOL详细介绍&#xff08;含操作手册&#xff09;&#xff1a;H7-TOOL开发工具&#xff0c;1拖4/16脱机烧录&#xff0c;高速DAPLINK&#xff0c;RTOS Trace&#xff0c;CAN/串口助手, 示波器, RTT等&#xff0c;支持WiFi&#xff0c;以太网&#xff0c;高速USB和手持 - H7-…

基于Matlab的变压器仿真模型建模方法(13):单相升压自耦变压器的等效电路和仿真模型

1.单相升压自耦变压器的基本方程和等效电路 单相升压自耦变压器的接线原理图如图1所示。在建立自耦变压器的基本方程时,仍然把它看成是从双绕组变压器演变而来。在图1中,设节点a到节点b部分的绕组的匝数为,对应于双绕组变压器的原边绕组;节点c到节点a部分的绕组的绕组匝数为…

Linux——查看并修改文件夹可读可写等权限

一、查看当前文件夹下的所有文件夹的权限 ls -l二、命令 drwxrwxr-x&#xff1a;只有所有者有可读可写可执行权限&#xff0c;其他用户只有可读可执行权限。 sudo chmod -R 775 文件夹名字drwxrwxrwx&#xff1a;所有用户都有可读可写可执行权限。 sudo chmod -R 777 文件夹…

【C++面向对象——类的多态性与虚函数】计算图像面积(头歌实践教学平台习题)【合集】

目录&#x1f60b; 任务描述 相关知识 1. 纯虚函数 一、特点 二、使用场景 三、作用 四、注意事项 五、相关概念对比 2. 抽象类的使用 一、定义与概念 二、使用场景 编程要求 测试说明 通关代码 测试结果 任务描述 本关任务&#xff1a;设计一个矩形类、一个圆形…

杰发科技——使用ATCLinkTool解除读保护

0. 原因 在jlink供电电压不稳定的情况下&#xff0c;概率性出现读保护问题&#xff0c;量产时候可以通过离线烧录工具避免。代码中开了读保护&#xff0c;但是没有通过can/uart/lin/gpio控制等方式进行关闭&#xff0c;导致无法关闭读保护。杰发所有芯片都可以用本方式解除读保…

【pytorch-lightning】架构一览

pytorch-lightning是基于pytorch的一个套壳项目&#xff0c;适配pytorch的版本同步更新速度很快。 它将训练的几个主要流程模块化&#xff0c;减少重复工作&#xff0c;同时让支持分布式训练&#xff0c;不同平台的训练迁移变得更加简单。 官网链接