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

文章目录

一、字符函数的构成

  • 头文件包含 :在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(表示假)。

  • 示例代码

    c 复制代码
    #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。

  • 示例代码

    c 复制代码
    #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。

  • 示例代码

    c 复制代码
    #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。

  • 示例代码

    c 复制代码
    #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。

  • 示例代码

    c 复制代码
    #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。

  • 示例代码

    c 复制代码
    #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。

  • 示例代码

    c 复制代码
    #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。

  • 示例代码

    c 复制代码
    #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。

  • 示例代码

    c 复制代码
    #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。

  • 示例代码

    c 复制代码
    #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。

  • 示例代码

    c 复制代码
    #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函数来验证密码是否包含字母和数字。

      c 复制代码
      #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;
      }
  • 文本处理

    • 举例 :将一段文本中的所有大写字母转换为小写字母。

      c 复制代码
      #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!"。

  • 字符加密与解密(简单示例)

    • 举例 :可以使用字符转换函数进行简单的加密,比如将文本中的每个字母向后移动一位(凯撒密码的简单形式)。

      c 复制代码
      #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进行加密。

相关推荐
OTWOL1 分钟前
【C++编程入门基础(一)】
c++·算法
许苑向上5 分钟前
Java八股文(下)
java·开发语言
谏君之7 分钟前
C语言实现的常见算法示例
c语言·算法·排序算法
菜鸟一枚在这10 分钟前
深入解析设计模式之单例模式
开发语言·javascript·单例模式
独孤求败Ace13 分钟前
第44天:Web开发-JavaEE应用&反射机制&类加载器&利用链&成员变量&构造方法&抽象方法
java·开发语言
计算机-秋大田26 分钟前
基于Spring Boot的农产品智慧物流系统设计与实现(LW+源码+讲解)
java·开发语言·spring boot·后端·spring·课程设计
matlabgoodboy27 分钟前
Matlab代编电气仿真电力电子电机控制自动化新能源微电网储能能量
开发语言·matlab·自动化
曾浩轩31 分钟前
51单片机学习之旅——C语言小知识
c语言·学习·51单片机
镰圈量化35 分钟前
当电脑上有几个python版本Vscode选择特定版本python
开发语言·vscode·python
机器视觉知识推荐、就业指导41 分钟前
【数字图像处理二】图像增强与空域处理
图像处理·人工智能·经验分享·算法·计算机视觉