第5章 字符串
串(string)是一种简单的数据结构,它的数据对象是字符集合.一系列相连的字符就组成了一个字符串.字符串简称为串.在非数值处理问题中,许多主要操作对象都是串.如在信息管理系统中,职员的姓名,住址,籍贯等都是串,对编译程序而言源程序中的每条语句也都是一个串.
在较早的程序设计语言中,串都是作为输入和输出的常量出现的,因此只需作为一个字符序列存储.随着语言加工程序的发展,产生了串处理,这时串也就作为一种变量类型出现在许多程序设计语言中.虽然目前有些程序设计语言已支持串类型,并提供一些串操作的函数,但为更好地实现串处理,本章将重点介绍串的存储和一些基本运算的实现.
5.1串和串的主要运算
5.1.1 串的基本概念
串是零个或多个字符组成的有限序列.一般记为:
S="c1c2c3…cn"
其中,s是串名;串中任意的ci (1≤i≤n)是单个字符,它可以是字母、数字或其他字符.用双引号括起来的字符序列称为串值,但双引号并不属于串值,它的作用只是用来标识一个串的起始和终止.n为串的长度,即串中所包含的字符的个数.若n=0,则称s为空串(null string),空串是不含有任何字符的串.通常,用两个相邻的双引号来表示空串.例如,在程序设计语言中
x ="book";
表明x是一个串变量名,而字符序列book是它的值,该串的长度为4.而y="";
表明y是一个空串,它不含有任何字符.
仅含有空格字符的串称为空格(blank string)串(注意不是空串).它的长度为串中空格符的个数.为了清楚起见,书写时用符号"Ф"表示空格符.例如
t = "ФФ";
表明t是一个空格串,它的长度为2.由于空格符也是一个字符,因此,它可以出现在其他字符之间,计算串长时应包括这些空格符.如串"bookФandФpen"的长度为12,而不是10.
将一个串中若干个相连字符组成的子序列称为该串的子串.包含子串的串相应地称为主串.比如,串"ABC"是"ABCD"的子串,反之串"ABCD"是"ABC"的主串,但串"ACB"、"ABE"和"ABD"都不是"ABCD"的子串.特别地,空串是任意串的子串,任意串是其自身的子串.
请注意,在C语言中单引号和双引号表示两各不同的概念.单引号表示单个字符,双引号则表示字符串.例如在C语言中'a'表示单个字符a,而"a"表示字符串"a\0";而在本书中"a"为只含有一个字符的串,使用时务必不要混淆.
5.1.2 串的主要运算
1)strassign (&a, b)
串的赋值运算.其中,a为串变量名,b可以是串变量名,也可以是一个字符序列.若b是串变量则把b的值赋给a,若b是一个字符序列,则赋值运算实质上为设定一个串,即将该字符序列赋给予串变量a.
例如,假设有s1="student",则执行
strassign (&a, s1)或strassign (&a,"student" )后,均有a="student".
2)strconcat(&c, a, b)
串的联接运算又叫并置.执行该运算的结果是将串b的值紧接着放在串a的值的末尾,而组成一个新串c.例如,给定如下3个串:
a ="ABC",b ="XYZ",c="1234"
则执行strconcat(s, a, b) 后有 s = "ABCXYZ"
执行strconcat(s, b, a) 后有 s = "YZABC"
而执行strconcat(s, strconcat(s1, a, c),b)
=strconcat(s, a, strconcat(s1, c, b)) 后均有 s ="ABC1234XYZ"(.
显然,串的联接运算不满足交换律,但满足结合律.
可以把两个串的联接运算推广到n个串的联接运算 , :
strconcat(&s,s1,s2,…,sn)
其运算结果是将这n个串的值依次首尾相接而得到一个新串s.
3) strlen(s)
求串长函数.它的作用是求出串s中的字符个数.
设串s1= "3.1415",s2 = " ",s3 = "aФhand",则有
strlen(s1)=6
strlen(s2)=0
strlen(s3)=6
4)strsub(s, m, n, &sub)
求子串的运算是指求串s中从第m个字符开始到第n个字符截止的连续字符子序列,并将这个子序列赋个变量sub.显然,有1 ≤ m ≤ n≤ 串长.
- 下载地址 (推荐使用迅雷下载地址,速度快,支持断点续传)
- DOC格式下载
- 您可能感兴趣的
- c1c2c3 c1c2c3模拟考试试题 5dc1c2c3 小型c1c2c3 生化危机5 cctv5在线直播 cctv5 苹果5 仙剑奇侠传5
- 大家在找
-
- · 再别康桥背景音乐mp3
- · 奥比岛免费冲红宝石
- · voa慢速英语听力下载
- · 农广校应用文写作课件
- · 会计电算化论文提纲
- · 湖北宜昌二手车皮卡
- · cf1.2.5水之城卡bug
- · c正则表达式教程
- · 陶瓷硅酸盐分析邮箱
- · 3.3v稳压芯片
- · 东莞cnc数控车床招聘
- · 中和热测定教学视频
- · cad2007官方网下载
- · 狸窝avi转换器
- · 如何自制二极管串联
- · 济南车管所试题
- · 百度mp3如何下载
- · 温湿度计价格
- · 梅塔特隆立方体
- · 北京大中电器促销
- · 一女n男超hhh文txt
- · 北京出国留学中介
- · 绘图板怎么用
- · 厦门国贸股吧
- · 家庭记账软件终身免费
- · 大学课后习题答案
- · 厦门大学金融学考研
- · autocad2004使用手册
- · 幼儿园小班英语单词
- · 2011注税课件免费下载
- 赞助商链接