文档介绍:串的定义及其基本运算
串的存储结构
串运算的应用
小结
第5章串(String)
2017/11/10
1页
本章学习目标
串(即字符串)是一种特殊的线性表,它的数据元素仅由一个字符组成。如在学生信息管理系统中,学生姓名、籍贯等信息是作为字符串处理的。通过本章学习,应掌握如下内容:
        串的基本概念;
      串的存储结构;
串的基本操作。
2017/11/10
2页
串的基本概念
串的定义及其基本运算
串(又称字符串)(String)是由零个或多个任意字符组成的序列。一般记作:
s="c1 c2 … cn" (n≥0)
其中s 是串名,双引号括起来的字符序列是串值,引号本身不属于串的内容;c i(1≤I≤n)可以是字母、数字或其它字符,称为串的元素,是构成串的基本单位,i是它在整个串中的序号;n为串的长度,表示串中所包含的字符个数,当n=0时,称为空串(Empty String),通常记为Ф,它不包含任何字符。
2017/11/10
3页
空白串:仅由一个或多个空格组成的串称为空白串(Blank String)。
应注意空串和空白串的不同,如" "和""分别表示长度为1的空白串和空串。
子串与主串:串中任意连续的字符组成的子序列称为该串的子串。包含子串的串相应地称为主串。
子串的位置:子串在主串中首次出现时,该子串的首字符对应主串的序号称为子串在主串中的位置。
例如,设A和B分别为
A="This is a string”,B ="is“
则B是A的子串,A为主串。且位置是3。
2017/11/10
4页
特别规定,空串是任意串的子串,任意串是其自身的子串。串相等:两个串相等,是指两个串的长度相等且对应字符都相同。
为叙述方便起见,先定义几个相关的变量:
char str1[20]="dir/bin/appl“
char str2[20]="",str3[30],*p;
int result;
(1)求串长strlen(str); 操作结果:返回串str的字符个数。若str为空串,则返回值为0。
例如 strlen(str1) /* 值为12 */
串的基本运算
2017/11/10
5页
(2)串拷贝strcpy (s1,s2) ; 执行操作:将s2的串值赋值给s1。操作结果:串s1的值与串s2的值相等,s1原来的值被覆盖掉。例如 strcpy (str3,str1)
(3)连接操作:strcat (s1,s2) ; 操作结果:将字符串s2连接在s1的后面,s2不改变。
例如操作前:s1="he",s2=" bei",
则操作结果是s1="he bei"
(4)串比较 strcmp(s1,s2);
操作结果:若s1==s2,返回值为0;若s1<s2, 返回值<0;若s1>s2, 返回值>0。
result= strcmp("abc","Abc");/* result>O */
result= strcmp ("","");/* result=O */
result= strcmp ("Joe',"Joseph");/* result<O */
2017/11/10
6页
(5)求子串substr (s1,s2,m,n) ;操作结果:返回从串s1的第m个字符开始的长度为n的子串,并赋值给s2。当n=0时得到的是空串。
例如:substr(str1, str3,5,3),则str3="bin"
再例如:substr(str1, str3,14,3),则str3=NULL
(6)子串定位 strindex(s,t);找子串t在主串s中首次出现的位置
操作结果:若t∈s,则操作返回t在s中首次出现的位置,否则返回值为-1。
如:strindex("abcdebda","bc")=2
strindex("abcdebda","ba")=-1
2017/11/10
7页
4 (7)串插入 StrInsert(s,i,t) ; 操作条件:串s,t存在,1≤i≤strlen(s)+1。 操作结果:将串t插入到串s 的第i个字符位置上。 (8)删除 StrDelete(s,i,len) ; 操作条件:串s存在,1≤i≤strlen (s), 0≤len≤strlen (s)-i+1。 操作结果:删除串s 中从第i个字符开始的长度为len的子串,s的串值改变。 (9)串替换 strrep(s,t,r) ; 操作条件:串s,t,r存在,t不为空。 操作结果:用串r 替换串s中出现的所有与串t相等的子