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

c语言——字符函数

gogogo出发咯

目录

一、字符分类函数

1.1. iscntrl 函数

1.1.1 iscntrl函数的使用 

1.2 isspace函数

1.2.1 空白字符的种类

1.2.2 isspace函数的使用 

1.3 islower函数 和 isupper函数

二、字符转换函数

2.1 tolower和toupper

2.2 tolower和toupper的具体实现 



  在编程的过程中我们需要处理很多字符和字符串,为了方便操作字符和字符串,c语言标准库中提供了一系列库函数,接下来我们就来看看这些函数 

一、字符分类函数

c语言中有一系列的函数是专门做字符分类的,也就是一个字符是属于什么类型的字符的。

这些函数的使用都需要包含一个头文件 ctype.h (后续小节不在赘述)

  • iscntrl —— 任何控制字符
  • isspace —— 空白字符:空格'',换页 '\f',换行 ‘\n’,回车'\r',制表符'\t',或者垂直制表符'\v'。
  • isdigit—— 十进制数字
  • isxdigit —— 十六进制数字,包过所有十进制数字符,小写字母a~f,大写字母A~F
  • islower —— 小写字母
  • isupper ——大写字母
  • isalpha —— 字母a~f或A~F
  • isalnum —— 字母或者数字
  • ispunct —— 标点符号
  • isgraph —— 任何图形字符
  • isprint —— 任何可以打印的字符,也包括图形字符和空白字符

1.1. iscntrl 函数

iscntrl 是 C 语言标准库中的一个函数,用于检查一个字符是否是控制字符。控制字符是一些不用于打印的字符,它们通常用于控制设备(如打印机)或文本格式(如换行、回车等)。

控制字符的范围通常是 ASCII 码表中的前 32 个字符(从 0 到 31),以及 127(DEL)。

包括:

  • 0: NUL (空字符)
  • 1: SOH (标题开始)
  • 2: STX (文本开始)
  • 3: ETX (文本结束)
  • 4: EOT (传输结束)
  • 5: ENQ (询问)
  • 6: ACK (确认)
  • 7: BEL (响铃)
  • 8: BS (退格)
  • 9: TAB (水平制表符)
  • 10: LF (换行)
  • 11: VT (垂直制表符)
  • 12: FF (换页)
  • 13: CR (回车)
  • 14: SO (换码)
  • 15: SI (移入)
  • 16-31: 其他控制字符
  • 127: DEL (删除)

1.1.1 iscntrl函数的使用 

我们已经初步了解了这个函数,那么这个函数是如何使用的呢?

iscntrl 函数的原型在 <ctype.h> 头文件中定义,其用法如下: 

#include <ctype.h>int iscntrl(int c);
//参数: c 是要检查的字符(通常是一个 int 类型的值,表示字符的 ASCII 码)。
返回值: 如果 c 是控制字符,返回一个非零值(通常是 1);否则返回 0。
#include <stdio.h>
#include <ctype.h>//使用iscntrl函数需要包含的头文件int main() {char ch1 = '\n'; // 换行符char ch2 = 'A';  // 字母 Aif (iscntrl(ch1)) {printf("'%c' 是控制字符。\n", ch1);} else {printf("'%c' 不是控制字符。\n", ch1);}if (iscntrl(ch2)) {printf("'%c' 是控制字符。\n", ch2);} else {printf("'%c' 不是控制字符。\n", ch2);}return 0;
}

这个示例我们来判断一下 换行符‘\n’ 和字母 ‘A’ 是否为控制字符 

 可以看出iscntrl函数可以帮助你判断一个字符是否是控制字符,特别是在处理文本数据和控制字符的时候大大提升了程序员的代码效率。

1.2 isspace函数

大家对于这个函数可以这么记忆 is   space(空白),拆分为两部分,space联想到这是空白字符

isspace 是 C 语言标准库中的一个函数,用于检查一个字符是否是空白字符。          

空白字符通常包括空格、制表符、换行符等,这些字符在文本中用于分隔单词或格式化文本,但不显示为可见字符。

1.2.1 空白字符的种类

在 C 语言中,isspace 函数通常会识别以下几种空白字符:

  • 空格字符 ' ' (ASCII 32)
  • 水平制表符 '\t' (ASCII 9)
  • 垂直制表符 '\v' (ASCII 11)
  • 换行符 '\n' (ASCII 10)
  • 回车符 '\r' (ASCII 13)
  • 换页符 '\f' (ASCII 12)

1.2.2 isspace函数的使用 

#include <ctype.h>int isspace(int c);
//参数: c 是要检查的字符(通常是一个 int 类型的值,表示字符的 ASCII 码)。
//返回值: 如果 c 是空白字符,返回一个非零值(通常是 1);否则返回 0。

#include <stdio.h>
#include <ctype.h>int main() {char ch1 = ' ';  // 空格char ch2 = '\n'; // 换行符char ch3 = 'A';  // 字母 Aif (isspace(ch1)) {printf("'%c' 是空白字符。\n", ch1);} else {printf("'%c' 不是空白字符。\n", ch1);}if (isspace(ch2)) {printf("'%c' 是空白字符。\n", ch2);} else {printf("'%c' 不是空白字符。\n", ch2);}if (isspace(ch3)) {printf("'%c' 是空白字符。\n", ch3);} else {printf("'%c' 不是空白字符。\n", ch3);}return 0;
}

按照第一个示例进行调整,在这个示例2中,我们再示例1中的代码再加上isspace函数所判断的空格就可以清晰的了解isspace函数的作用

这次判断空格‘ ’,换行符‘\n’,字母‘A’是否为空白字符

1.3 islower函数 和 isupper函数

islower 和 isupper 是 C 语言标准库中的两个函数,用于检查字符的大小写。它们的功能相对,通常可以一起理解。以下是对这两个函数的详细说明:

islower函数用于判断字符内是否有小写

isupper函数用于判断字符内是否有大写

int islower(int c)int isupper(int c)//参数: c 是要检查的字符(通常是一个 int 类型的值,表示字符的 ASCII 码)。
返回值: 如果 c 是小写字母(’a’ 到 'z’),返回一个非零值(通常是 1);否则返回 0。
#include <stdio.h>
#include <ctype.h>int main() {char ch1 = 'a';  // 小写字母char ch2 = 'Z';  // 大写字母char ch3 = '1';  // 数字char ch4 = 'b';  // 小写字母char ch5 = 'C';  // 大写字母if (islower(ch1)) {printf("'%c' 是小写字母。\n", ch1);} else {printf("'%c' 不是小写字母。\n", ch1);}if (isupper(ch2)) {printf("'%c' 是大写字母。\n", ch2);} else {printf("'%c' 不是大写字母。\n", ch2);}if (islower(ch3)) {printf("'%c' 是小写字母。\n", ch3);} else {printf("'%c' 不是小写字母。\n", ch3);}if (isupper(ch4)) {printf("'%c' 是大写字母。\n", ch4);} else {printf("'%c' 不是大写字母。\n", ch4);}if (islower(ch5)) {printf("'%c' 是小写字母。\n", ch5);} else {printf("'%c' 不是小写字母。\n", ch5);}return 0;
}

但这个代码太长啦,我们该如何去优化一下呢?其实我们可以自己定义一个函数

#include <stdio.h>
#include <ctype.h>void checkCharacter(char ch) {if (islower(ch)) {printf("'%c' 是小写字母。\n", ch);} else if (isupper(ch)) {printf("'%c' 是大写字母。\n", ch);} else {printf("'%c' 不是字母。\n", ch);}
}int main() {char characters[] = {'a', 'Z', '1', 'b', 'C'};int numChars = sizeof(characters) / sizeof(characters[0]);for (int i = 0; i < numChars; i++) {checkCharacter(characters[i]);}return 0;
}

  • int main(): 主函数的入口点。
  • char characters[] = {'a', 'Z', '1', 'b', 'C'};: 定义一个字符数组 characters,包含要检查的字符。
  • int numChars = sizeof(characters) / sizeof(characters[0]);: 计算数组中字符的数量。sizeof(characters) 返回整个数组的字节大小,sizeof(characters[0]) 返回单个字符的字节大小。两者相除得到数组的元素个数。
  • for (int i = 0; i < numChars; i++): 使用 for 循环遍历字符数组。
    • checkCharacter(characters[i]);: 调用 checkCharacter 函数,传入当前字符进行检查。
  • return 0;: 返回 0,表示程序正常结束。

 笔者列出的字符分类函数的具体实现和以上所详细介绍的差不多,大家可以下来自己尝试一下

二、字符转换函数

2.1 tolower和toupper

c语言中提供了两个字符转换函数:

int tolower ( int c ); ———将参数传进去的大写字母转小写

int toupper ( int c ); ———将参数传进去的小写字母转大写

2.2 tolower和toupper的具体实现 

int main()
{int i = 0;char str[] = "Test String.\n";char c;while (str[i]){c = str[i];if (islower(c))c = toupper(c);putchar(c);i++;}return 0;
}
  1. #include <stdio.h>: 引入标准输入输出库,以便使用 putchar 函数。
  2. #include <ctype.h>: 引入字符处理库,以便使用 islower 和 toupper 函数。
  3. int main(): 主函数,程序的入口点。
  4. int i = 0;: 初始化一个整数变量 i,用于索引字符串 str
  5. char str[] = "Test String.\n";: 定义一个字符数组 str,并初始化为 "Test String.",后面跟着一个换行符 \n
  6. char c;: 定义一个字符变量 c,用于存储当前处理的字符。
  7. while (str[i]): 开始一个循环,条件是 str[i] 不为 \0(字符串结束符)。这意味着只要 i指向的字符不是字符串的结束,就继续循环。
  8. c = str[i];: 将当前字符赋值给 c
  9. if (islower(c)): 检查 c 是否是小写字母。如果是,执行下面的语句。
  10. c = toupper(c);: 将小写字母 c 转换为大写字母。
  11. putchar(c);: 输出当前字符 c 到标准输出。
  12. i++;: 将 i 增加 1,以便处理下一个字符。
  13. return 0;: 返回 0,表示程序正常结束。 

完 

相关文章:

  • 查询宝塔的数据库信息
  • 多轮对话实现
  • 【大模型】RankRAG:基于大模型的上下文排序与检索增强生成的统一框架
  • 格恩朗超声波水表 绿色助农 精准领航​
  • 02.运算符
  • [ linux-系统 ] 进程控制
  • helm使用说明和实例
  • 赞助打赏单页HTML源码(源码下载)
  • 基于算法竞赛的c++编程(24)位运算及其应用
  • python3基础语法梳理(一)
  • 安全领域新突破:可视化让隐患无处遁形
  • Easy Excel
  • c语言(持续更新)
  • 使用DataX同步MySQL数据
  • OSPF域内路由
  • matlab时序预测并绘制预测值和真实值对比曲线
  • 6.9本日总结
  • DPC密度峰值聚类
  • PostgreSQL 与 SQL 基础:为 Fast API 打下数据基础
  • 卷积神经网络设计指南:从理论到实践的经验总结
  • 找网站建设客户/常用的网络推广手段有哪些
  • 购物网站成功案例/湖南今日新闻最新头条
  • 青海网站建设价格低/网络推广接单平台
  • 网站建设服务上海/seo网站优化培训怎么做
  • 支付宝网站支付接口/seo搜索引擎优化心得体会
  • 网站建设和网络推广是干嘛/企业网站优化服务