分享
 
 
 

帮我看看这个程序吧,好像问题很多呀

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

#include<iostream.h>

#include<conio.h>

#include<stdlib.h>

#include<malloc.h>

#define ERROR 0

#define OK 1

#define OVERFLOW -2

typedef int Status;

typedef struct{

char *ch;

int length;

}StringType;

void InitStr(StringType &s);

// 初始化s为空串。

void StrAssign(StringType &t, char *chars);

// 将s的值赋给t。s的实际参数是串变量。

int StrCompare(StringType s, StringType t);

// 比较s和t。若s>t,返回值>0;若s=t,返回值=0; 若s<t,返回值<0。

int StrLength(StringType s);

// 返回s中的元素个数,即该串的长度。

StringType Concat(StringType &s, StringType t);

// 返回由s和t联接而成的新串。

StringType SubString(StringType s, int start, int len);

// 当1<=start<=StrLength(s)且0<=len<=StrLength(s)- start+1时,

// 返回s中第start个字符起长度为len的子串,否则返回空串。

void Replace(StringType &S, StringType T, StringType V);

/* 以串 v 置换串 s 中出现的所有和串 t 相同的非空串 */

// 注意,不要使用 " s = " 的形式为 StringType 类型的变量赋值 ,

// 而要使用 StrAssign 函数!!!

void InitStr(StringType &s)

{

s.ch = (char *)malloc(sizeof(char));

if(!s.ch)exit(OVERFLOW);

s.length = 0;

}

void StrAssign(StringType &t, StringType s)

{

char *p;

int i;

if(t.ch) free(t.ch);

for(i=0, p=s.ch; *p; ++i,++p);

if(!i){t.ch = NULL;t.length = 0;}

else

{

if(!(t.ch = (char *)malloc(i*sizeof(char))))

exit(OVERFLOW);

for(i=0, p=s.ch; *p ; ++i,++p)

t.ch[i] = s.ch[i];

}

t.length = i;

}

int StrCompare(StringType s, StringType t)

{

int i;

s.length = StrLength(s);

t.length = StrLength(t);

for(i=0;i<s.length && i<t.length;++i)

{if(s.ch[i]!=t.ch[i]) return (s.ch[i]-t.ch[i]);}

return (s.length-t.length);

}

int StrLength(StringType s)

{

int i;

char *p;

for(i=0, p=s.ch; *p; ++i,++p);

s.length = i;

return s.length;

}

StringType Concat(StringType &t, StringType s1, StringType s2)

{

char *p,*q;

int i,j;

if(t.ch) free(t.ch);

s1.length = StrLength(s1);

s2.length = StrLength(s2);

if(!(t.ch = (char *)malloc((s1.length + s2.length)*sizeof(char))))

exit(OVERFLOW);

for(i=0, p=s1.ch; *p ; ++i,++p)

t.ch[i] = s1.ch[i];

for( j=0, q=s2.ch; *q;++j,++q)

t.ch[s1.length+j] = s2.ch[j];

t.length = s1.length + s2.length;

return t;

}

StringType SubString(StringType &Sub,StringType s, int start, int len)

// 当1<=start<=StrLength(s)且0<=len<=StrLength(s)- start+1时,

// 返回s中第start个字符起长度为len的子串,否则返回空串。

{

s.length = StrLength(s);int i;

if(start<1 || start>s.length || len<0 || len>s.length-start+1)

exit(ERROR);

if(!len){Sub.ch = NULL;Sub.length = 0;}

else

{

if(Sub.ch) free(Sub.ch);

Sub.ch = (char *)malloc( len* sizeof(char));

if(!Sub.ch)exit(OVERFLOW);

for( i=0;i<len;++i)

Sub.ch[i] = s.ch[start+i-1];

Sub.length = len;

}

return Sub;

}

void Replace(StringType &S, StringType T, StringType V)

/* 以串 v 置换串 s 中出现的所有和串 t 相同的非空串 */

{

StringType t,head,tail,x,y,z;

InitStr(t);

InitStr(head);

InitStr(tail);

InitStr(x);

InitStr(y);

InitStr(z);

int i=1;

//for(int i=1;i<=StrLength(S)-StrLength(T)+2;++i)

while(i<=StrLength(S)-StrLength(T)+1)

{

SubString(t,S,i,StrLength(T));

cout<<t.ch<<endl;

cout<<T.ch<<endl;

if(StrCompare(t,T)!=0)

{ cout<<StrCompare(t,T)<<endl;

++i;}

else

{

cout<<StrCompare(t,T)<<endl;

//cout<<t.ch<<endl;

//cout<<T.ch<<endl;

cout<<"ssssssssssss"<<endl;

SubString(x,S,1,i-1);

StrAssign(head,x);

SubString(y,S,i+StrLength(T),StrLength(S)-i-StrLength(T)+1);

StrAssign(tail,y);

Concat(z,head,V);cout<<z.ch<<endl;

Concat(S,z,tail);cout<<S.ch<<endl;

//StrAssign(S,);

//StrAssign(S,);

i+=StrLength(V);

}

}

}

int main()

{

StringType r,s,t,T,S,s1,s2,V;

InitStr(r);InitStr(t);InitStr(s);InitStr(T);InitStr(S);InitStr(s1);InitStr(s2);InitStr(V);

s.ch="ChinaTown";

S.ch="howareyou";

T.ch="are";

V.ch="wer";//cout<<t.ch<<endl;

s1.ch="goodsdfsf";s2.ch="timesdfdsfsafd";//cout<<StrLength(s)<<endl;

//cout<<s.ch<<endl;

//cout<<c<<endl;

//StrAssign(t,s);

//cout<<t.ch<<endl;

//cout<<StrCompare(s,t)<<endl;

cout<<Concat(r,s1,s2).ch<<endl;

//for(int i=1;i<StrLength(s)-6;++i)

//cout<<SubString(t,s ,i ,8).ch<<endl;

//Replace(S,T,V);

//cout<<S.ch<<endl;

getch();

return 1;

}

真是想破脑胫了

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有