基于定长顺序存储结构实现对串的赋值、串比较、求子串的位置、串替换等操作。要求所有操作均以函数的形式实现,在主函数中调用各个函数实现整体功能。
注意:每一个字符串的第一个元素存放的是该字符串的长度(不包括第一个元素),除串的赋值外,其他所有操作(比较、求子串的位置、串替换)等都不应包含该字符。
1.1.实验1:串赋值函数实现:
按照系统已经定义的函数接口编写函数实体,实现:将输入数组StrInput[]的数据赋值给待赋值数组StrTobeAssigned[],其中待赋值数组StrTobeAssigned[0]存放有效数据的长度,StrTobeAssigned[1]之后存放带赋值数据。
具体要求和相关假设为:
① 函数接口定义为:int MyStrAssign(char * StrTobeAssigned, char * StrInput);
② 输入参数:待赋值字符串变量StrTobeAssigned,字符串的期望值StrInput;
③ 输出参数:无;
④ 处理规则及返回值:将StrTobeAssigned[1]及之后的内容赋值为StrInput的有效内容,StrTobeAssigned[0]赋值为StrInput有效字符的长度,并返回1;
⑤ 假设:
a)两个字符串均不为空串;
b)StrInput存放的是一个完成的字符串(不包含长度);
c)赞不考虑输入数据超过数组总长度的情况。
1.2实验2:串替换函数:
按照系统已经定义的函数接口编写函数实体,实现:在主串中MainStr查找是否存在某特定子串SubStr1,若存在则将所有的SubStr1替换为新的指定子串SubStr2,函数返回字符串替换的次数。
具体要求和相关假设为:
① 函数接口定义为:int MyStrReplace(char * MainStr, char * SubStr1, char * SubStr2);
② 输入参数:主串变量MainStr,子串变量SubStr1,SubStr2;
③ 输出参数:无;
④ 处理规则及返回值:若主串中存在子串,用SubStr2替换主串MainStr中出现的所有与SubStr1相同的不重叠的子串,并返回字符串替换的次数;否则返回0。
⑤ 假设:
a)主串和两个子串均不为空串;
b)MainStr[0]和SubStr1[0],SubStr2[0]分别存放对应字符串的长度,不用替换该部分。
2.问题分析
(1)根据实验一的内容可知,我们需要通过编写函数实体的形式实现串的赋值操作,主要的思路包括:
(a)获得输入字符串的长度len;
(b)将输入字符串的长度len赋值给待赋值字符串的第一个元素StrTobeAssigned[0];
(c)依次将输入字符串的数据赋值给待赋值字符串。
(2)根据实验二的内容可知,我们需要通过编写函数实体的形式实现串的替换操作,主要的思路包括:
(a)遍历主串MainStr,检查是否存在某特定子串SubStr1;
(b)如果存在则找到子串在主串中的位置;
(c)在主串中删除该子串并更新主串长度;
(d)在主串中插入该子串并更新主串长度;
(e)过程中记录替换字符串的次数,遍历结束后返回该次数(如果没有替换则为0);
如果有必要,可以使用本实验已经提供的相关函数,如:求子串位置的函数MySubStrIndex(),子串删除函数MyStrDelete()和子串插入函数MyStrInsert()等
2022-05-20 08:59:18
7KB
Cyuyan
1