字符串的操作

上传人:大米 文档编号:564630126 上传时间:2023-05-20 格式:DOC 页数:6 大小:84KB
返回 下载 相关 举报
字符串的操作_第1页
第1页 / 共6页
字符串的操作_第2页
第2页 / 共6页
字符串的操作_第3页
第3页 / 共6页
字符串的操作_第4页
第4页 / 共6页
字符串的操作_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《字符串的操作》由会员分享,可在线阅读,更多相关《字符串的操作(6页珍藏版)》请在金锄头文库上搜索。

1、上机实习报告实验题目:实现字符串的操作基本要求:(1)字符串采用动态数组存储,建立两个字符串String1和String2,输出两个字符串(2)将字符串String2的头n个字符添加到String1的尾部,输出结果(3)查找串String3在String1中的位置,若String3在String1中不存在,则插入String3在String1中的m位置上,输出结果测试数据:(1)string1:”typedefstructArcBox”String2:”VertexTypedata”String3:”data”(2) String1:”structArcBox”String2:”VertexT

2、ype”String3:”Box”算法思想:1用动态数组存储,建立两个字符串String1和String2,输出两个字符串。2将字符串String2的头n个字符添加到String1的尾部,输出结果3查找串String3在String1中的位置,若String3在String1中不存在,则插入String3在String1中的m位置上,输出结果模块划分:(1)void Initiate(DString *S, int max, char *string)的作用是:初始化字符串S,将string的字符复制到S中;(2)int Insert(DString *S, int pos, DString

3、T)的作用是:在主串的pos位置插入子串T;(3)int Delete(DString *S, int pos, int len)函数的功能是:删除主串s从pos位置开始的长度为len的子串,删除成功则返回1,失败则返回0(4) int SubString(DString *S, int pos, int len, DString *T) 取主串S从pos位置开始的长度为len的字串,取成功返回1,失败返回0;(5)void Destroy(DString *S)的函数的功能是:撤销串S所占的空间(6)void BFIndex(DString S,int start,DString T)函数的

4、功能是:查找子串S从start开始的子串T数据结构: typedef structchar *str;int maxLength;int length; DString;实验程序: 头文件:typedef structchar *str;int maxLength;int length; DString;void Initiate(DString *S, int max, char *string)int i;S-str = (char *)malloc(sizeof(char)*max);S-maxLength=max;S-length = strlen(string); for(i = 0

5、; i length; i+)S-stri = stringi;int Insert(DString *S, int pos, DString T) int i;if(pos str所指数组空间,原数组元素存放在新数组的前面 if(S-length + T.length S-maxLength) realloc(S-str, (S-length+T.length)*sizeof(char);S-maxLength=S-length+T.length; for(i = S-length-1; i = pos; i-) S-stri+T.length = S-stri; /依次后移T.length

6、个位置 for(i = 0; i strpos+i = T.stri; /插入字串 S-length = S-length + T.length; /改变S的数据元素个数 return 1;/删除主串s从pos位置开始的长度为len的子串,删除成功则返回1,失败则返回0 int Delete(DString *S, int pos, int len) int i;if(S-length = 0) printf(数组中未存放字符无元素可删! n);return 0;else if(pos 0 | len S-length) printf(参数pos和len不合法); return 0; else

7、 for(i = pos+len; i length-1; i+)S-stri-len = S-stri; /依次前移len个位置 S-length = S-length - len; /重置数据元素个数 return 1; /取主串S从pos位置开始的长度为len的字串,取成功返回1,失败返回0 int SubString(DString *S, int pos, int len, DString *T) int i;if(pos 0 | len S-length) printf(参数pos和len出错!);return 0;if(lenT-maxLength)T-str=(char*)ma

8、lloc(len*sizeof(char);T-maxLength=len; for(i = 0; i stri = S-strpos+i; T-length = len; return 1; void Destroy(DString *S)free(S-str);S-maxLength = 0;S-length = 0; void BFIndex(DString S,int start,DString T)int i=start,j=0,v;while(iS.length&jT.length)if(S.stri=T.strj)i+;j+;else i=i-j+1;j=0;if(j=T.len

9、gth)v=i-T.length;printf(串String3在String1中的%d位置,v);else printf(串String3在String1中不存在!n);Insert(&S,S.length,T);for(i=0;iS.length;i+)printf(%c,S.stri);printf(n);主函数测试:#include#include#include#includehead.hvoid main()DString mystring1,mystring2,mystring3,mystring4;int i,max1=19,max2=14,max3=3,max4=0;/初始化

10、Initiate(&mystring1,max1,typedefstructArcBox);Initiate(&mystring2,max2,VertexTypedata);Initiate(&mystring3,max3,data);Initiate(&mystring4,max4,);/建立两个字符串String1和String2,输出两个字符串printf(字符串mystring1是:);for(i=0;imystring1.length;i+)printf(%c,mystring1.stri);printf(n);/输出第二个字符串printf(字符串mystring2是:);for(

11、i=0;imystring2.length;i+)printf(%c,mystring2.stri);printf(n);/将字符串String2的头5个字符添加到String1的尾部,输出结果SubString(&mystring2,0,5,&mystring4);Insert(&mystring1,mystring1.length,mystring4);/查找串String3在String1中的位置,若String3在String1中不存在,/则插入String3在String1中的m位置上,输出结果for(i=0;imystring1.length;i+)printf(%c,mystri

12、ng1.stri);printf(n);BFIndex(mystring1,0,mystring3);printf(n);printf(n);printf(n);printf(n);max1=12,max2=10,max3=3,max4=0;/初始化Initiate(&mystring1,max1,structArcBox);Initiate(&mystring2,max2,VertexType);Initiate(&mystring3,max3,Box);Initiate(&mystring4,max4,);/建立两个字符串String1和String2,输出两个字符串printf(字符串m

13、ystring1是:);for(i=0;imystring1.length;i+)printf(%c,mystring1.stri);printf(n);/输出第二个字符串printf(字符串mystring2是:);for(i=0;imystring2.length;i+)printf(%c,mystring2.stri);printf(n);/将字符串String2的头5个字符添加到String1的尾部,输出结果SubString(&mystring2,0,5,&mystring4);Insert(&mystring1,mystring1.length,mystring4);/查找串String3在String1中的位置,若String3在String1中不存在,/则插入String3在String1中

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

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