第10章字符及字符串处理

上传人:cl****1 文档编号:584033150 上传时间:2024-08-30 格式:PPT 页数:15 大小:446.02KB
返回 下载 相关 举报
第10章字符及字符串处理_第1页
第1页 / 共15页
第10章字符及字符串处理_第2页
第2页 / 共15页
第10章字符及字符串处理_第3页
第3页 / 共15页
第10章字符及字符串处理_第4页
第4页 / 共15页
第10章字符及字符串处理_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《第10章字符及字符串处理》由会员分享,可在线阅读,更多相关《第10章字符及字符串处理(15页珍藏版)》请在金锄头文库上搜索。

1、第第10章章 字符及字符串处理字符及字符串处理本章将介绍本章将介绍Linux系统中的字符编码,以及如何利用系统中的字符编码,以及如何利用C语言标准函数库中的函数处理字符、字符串和内存中的数据。语言标准函数库中的函数处理字符、字符串和内存中的数据。字符处理库字符处理库“ctype.h”、实用函数库实用函数库“stdlib.h”和字符和字符串处理库串处理库“string.h”内的函数是本章的重点,这些函数是内的函数是本章的重点,这些函数是开发文本编辑器、通信软件等程序的基础。另外,本章还将开发文本编辑器、通信软件等程序的基础。另外,本章还将介绍如何使用简单的字符串处理算法设计文本加密程序,以介绍如

2、何使用简单的字符串处理算法设计文本加密程序,以加深读者对字符串处理函数工作原理的认识。加深读者对字符串处理函数工作原理的认识。10.1 字符编码字符编码最早的字符编码是布莱叶发明的盲文体系,他用凸凹不最早的字符编码是布莱叶发明的盲文体系,他用凸凹不平的点所组成的阵列来表示字符,使盲人能够阅读和书写。平的点所组成的阵列来表示字符,使盲人能够阅读和书写。计算机受限于逻辑电路,并不能直接识别和表示字符,早期计算机受限于逻辑电路,并不能直接识别和表示字符,早期的计算机科学家受到布莱叶盲文的启示,使用有规则的二进的计算机科学家受到布莱叶盲文的启示,使用有规则的二进制序列代表字符,于是形成了计算机字符编码

3、体系。制序列代表字符,于是形成了计算机字符编码体系。10.1.1 ASCII编码编码 ASCII编码的全称是美国信息交换标准编码,是当前最编码的全称是美国信息交换标准编码,是当前最流行的计算机字符编码系统之一。流行的计算机字符编码系统之一。ASCII编码体系是编码体系是7位,用位,用十六进制数表示是十六进制数表示是0x000xFF,共有共有128个元素。其中,前个元素。其中,前32个元素和最后一个元素是用于字符处理时的控制指令。个元素和最后一个元素是用于字符处理时的控制指令。ASCII编码中大写字母和小写字母的差值是编码中大写字母和小写字母的差值是20h,所以所以将大写字母转换为小写字母,或将

4、小写字母转换为大写字母将大写字母转换为小写字母,或将小写字母转换为大写字母非常方便。非常方便。10.1.2 Unicode编码编码Unicode编码是编码是ASCII码的升级体系,这种编码使用码的升级体系,这种编码使用2个、个、4个或更多字节的存储空间,已建立了个或更多字节的存储空间,已建立了10万字符的全球通用万字符的全球通用字符集。字符集。Linux系统中以系统中以UTF-8标准的标准的Unicode编码作为系统编码作为系统的内码,每个字符的存储空间为的内码,每个字符的存储空间为2字节,但同时也能兼容字节,但同时也能兼容ASCII码的单字节体系。码的单字节体系。在在Linux系统上开发程序

5、时,应考虑双字节编码的问题,系统上开发程序时,应考虑双字节编码的问题,尽量不使用字符型变量接受系统传入的字符型数据,以及使尽量不使用字符型变量接受系统传入的字符型数据,以及使字符型数组的长度保持为偶数。字符型数组的长度保持为偶数。10.2 字符处理库字符处理库字符处理库字符处理库“ctype.h”包含一系列对包含一系列对ASCII编码字符数据进编码字符数据进行测试和处理的函数。每个函数接受一个整型数据作为参数,或行测试和处理的函数。每个函数接受一个整型数据作为参数,或者用文件结束符者用文件结束符EOF作为参数。作为参数。ASCII编码字符通常是编码字符通常是1字节的整字节的整数,因此字符通常作

6、为整数来处理。数,因此字符通常作为整数来处理。10.3 字符串转换函数字符串转换函数在设计程序时,有时需要将字符串所代表的数字转换为在设计程序时,有时需要将字符串所代表的数字转换为其他类型的数值,或者将其他类型的数值转换为用字符串表其他类型的数值,或者将其他类型的数值转换为用字符串表示的数据。实用函数库示的数据。实用函数库“stdlib.h”提供了这一类函数,如提供了这一类函数,如表表10.2所示。所示。10.4 字符串处理函数字符串处理函数字符串处理库字符串处理库“string.h”为处理字符串数据、比较字为处理字符串数据、比较字符串、在字符串中查找字符和其他字符串、标记字符串(将符串、在字

7、符串中查找字符和其他字符串、标记字符串(将字符串划分成逻辑段)和确定字符串长度提供了常用的函数,字符串划分成逻辑段)和确定字符串长度提供了常用的函数,见表见表10.3所示。所示。10.5 字符串比较函数字符串比较函数字符存储形式为正整数,所以可比较两个字符之间的大字符存储形式为正整数,所以可比较两个字符之间的大小。字符串比较是将两个字符串位置相对应的字符逐个比对,小。字符串比较是将两个字符串位置相对应的字符逐个比对,比较两个字符串之间的大小。字符串比较函数对判断两个字比较两个字符串之间的大小。字符串比较函数对判断两个字符串中内容是否相同和对字符串排序非常有用。常用的字符符串中内容是否相同和对字

8、符串排序非常有用。常用的字符串比较函数见表串比较函数见表10.4。int strcmp(const char *s1, const char *s2)比较字符串s1与字符串s2int strncmp (const char *s1, const char *s2, size_t n)比较字符串s1与字符串s2前n个字符10.6 字符串查找函数字符串查找函数字符串处理库提供了在字符串中找到相同的字符或子字符串的函数,字符串处理库提供了在字符串中找到相同的字符或子字符串的函数,以及将字符串分组的函数。常用的字符串查找函数见表以及将字符串分组的函数。常用的字符串查找函数见表10.5所示。所示。10.

9、7 字符串内存函数字符串内存函数字符串处理库提供了内存函数,这些函数将内存块作为字符字符串处理库提供了内存函数,这些函数将内存块作为字符数组处理,能复制、比较和查找内存块。表数组处理,能复制、比较和查找内存块。表10.6列出了字符串处理列出了字符串处理库中的内存函数。库中的内存函数。10.8 字符串其他函数字符串其他函数字符串处理库其余的两个函数是字符串处理库其余的两个函数是sterror()和和strlen(),sterror()函数能从编译器获得错误代码的文本描述,使程序的错误函数能从编译器获得错误代码的文本描述,使程序的错误能够获得直观的解答。能够获得直观的解答。strlen()函数的作

10、用是返回一个字符串函数的作用是返回一个字符串的长度,该长度是从字符串首地址到字符串结束符之间的字的长度,该长度是从字符串首地址到字符串结束符之间的字符距离,见表符距离,见表10.7所示。所示。char *strerror(int errornum)用和系统相关的方式将errornum映射到纯文本字符串中,返回指向该字符串的指针size_t strlen(const char *s)确定字符串s的长度,返回字符串结束符前的字符个数10.9 媒体播放器媒体播放器实现播放列表检索功能实现播放列表检索功能本章实例将对其进行扩展,第一个任务是对播放列本章实例将对其进行扩展,第一个任务是对播放列表进行排序

11、,要求能比较整个字符串。第二个任务是在表进行排序,要求能比较整个字符串。第二个任务是在播放列表中进行查找,找到与查找条件匹配的项目。播放列表中进行查找,找到与查找条件匹配的项目。10.9.1 对播放列表中整个字符串进行排序对播放列表中整个字符串进行排序本章学习了字符串比较函数,该函数能够依次比较两个本章学习了字符串比较函数,该函数能够依次比较两个字符串间所有的字母,真正做到按名称排序的要求。使用该字符串间所有的字母,真正做到按名称排序的要求。使用该函数只需对第函数只需对第8章实例部分做很小的修改,章实例部分做很小的修改,代码中使用了代码中使用了strcmp()函数比较两个字符串的大小,如函数比

12、较两个字符串的大小,如果前面一个字符串大于后面的字符串,那么就交换两个指针果前面一个字符串大于后面的字符串,那么就交换两个指针中的地址。中的地址。10.9.2 在播放列表中查找字符串在播放列表中查找字符串在播放列表中查找字符串有两种模式,一种是完全匹配,另一种是在播放列表中查找字符串有两种模式,一种是完全匹配,另一种是模糊查找。前者可使用现有的字符串处理库中的函数来实现,而后者必须模糊查找。前者可使用现有的字符串处理库中的函数来实现,而后者必须定义新的函数来完成。定义新的函数来完成。1在播放列表中查找字符串2模糊查找实现方法10.10 小结小结本章介绍了字符串处理的各种函数和内存处理函数,读本

13、章介绍了字符串处理的各种函数和内存处理函数,读者通过本章的学习应对计算机的编码知识具备有较深刻的理者通过本章的学习应对计算机的编码知识具备有较深刻的理解,同时也掌握了处理字符串数据的能力。借助指针和内存解,同时也掌握了处理字符串数据的能力。借助指针和内存处理函数,处理函数,C语言可直接处理内存中的数据,因此语言可直接处理内存中的数据,因此C语言常语言常被用来设计各种操作系统软件和底层的网络通信软件。在利被用来设计各种操作系统软件和底层的网络通信软件。在利用这些函数设计程序时,读者可借助用这些函数设计程序时,读者可借助GDB等编译器查看内存等编译器查看内存中数据的变化,这样既能避免程序出现严重的段错误,又能中数据的变化,这样既能避免程序出现严重的段错误,又能更清晰地了解各种字符串处理函数和内存处理函数的工作原更清晰地了解各种字符串处理函数和内存处理函数的工作原理。理。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号