数据结构C语言顺序串 求高手修改,特别是concat函数,高手帮忙啊,急!!!!!!!
#include<stdio.h>#defineMAX100#defineFALSE0#defineTRUE1typedefstruct{charch[MAX];intl...
#include<stdio.h>
#define MAX 100
#define FALSE 0
#define TRUE 1
typedef struct
{char ch[MAX];
int len;
}SqString;
void strAssign(SqString *str,char cstr[] )
{int i;
for(i=0;cstr[i]!='\0';i=++)
{ scanf("%c",&cstr[i]);
str.ch[i]=cstr[i]; }
str.len=i;
}
int StrCompare(SqString S,SqString T)
{
int i;
for (i = 0; i <S.len&&i < T.len; ++i)
if (S.ch[i]!=T.ch[i])
return S.ch[i]-T.ch[i];
return (S.len-T.len);
}
int StrLength(SqString S)
{
return S.len;
}
int concat(SqString S,SqString T)
{ int i,overflow;
if (S.len+T.len<=MAX)
{ for(i=1;i<=T.len;i++) S[S.len+i]=T[i];
S.len=S.len+T.len; overflow=FALSE;
}
else { overflow=TRUE;
if(S.len<MAX)
for(i=1;i<MAX-S.len;i++) S[S.len+i]=T[i];
}
return overflow;
}
int SubString (Sqstring *sub,Sqstring s,int pos,int length )
{ int i;
if(pos<1 || pos>s.len || len<0 || length+pos-1 >s.len)
return ERROR;
else
{ for(i=1;i<=length;i++)
sub[i]=s[pos+i];
sub.len=length;
return OK;
}
}
void Print(SqString S)
{int i;
if(S.len>0)
{for(i=0;i<S.len;i++)
printf("c%",S.ch[i]);
printf("\n");}
}
void main()
{int m,n,pos;
SqString S,T,sub;
printf("Please input S");
StrAssign(S);
print(S);
printf("Please input T");
StrAssign(T);
print(T);
m=StrCompare(S,T);
printf("%d",m);
n=StrLength(S)
printf("%d",m);
concat (S,T);
print(S);
printf("Please input pos= ,length= \n");
scanf("%d%d",&pos,&length);
SubString (&sub,S,pos,length);
print(sub);
getch();
}
特别是concat函数,编译错误特别多,不知道怎么回事?
谢谢啦。。。 展开
#define MAX 100
#define FALSE 0
#define TRUE 1
typedef struct
{char ch[MAX];
int len;
}SqString;
void strAssign(SqString *str,char cstr[] )
{int i;
for(i=0;cstr[i]!='\0';i=++)
{ scanf("%c",&cstr[i]);
str.ch[i]=cstr[i]; }
str.len=i;
}
int StrCompare(SqString S,SqString T)
{
int i;
for (i = 0; i <S.len&&i < T.len; ++i)
if (S.ch[i]!=T.ch[i])
return S.ch[i]-T.ch[i];
return (S.len-T.len);
}
int StrLength(SqString S)
{
return S.len;
}
int concat(SqString S,SqString T)
{ int i,overflow;
if (S.len+T.len<=MAX)
{ for(i=1;i<=T.len;i++) S[S.len+i]=T[i];
S.len=S.len+T.len; overflow=FALSE;
}
else { overflow=TRUE;
if(S.len<MAX)
for(i=1;i<MAX-S.len;i++) S[S.len+i]=T[i];
}
return overflow;
}
int SubString (Sqstring *sub,Sqstring s,int pos,int length )
{ int i;
if(pos<1 || pos>s.len || len<0 || length+pos-1 >s.len)
return ERROR;
else
{ for(i=1;i<=length;i++)
sub[i]=s[pos+i];
sub.len=length;
return OK;
}
}
void Print(SqString S)
{int i;
if(S.len>0)
{for(i=0;i<S.len;i++)
printf("c%",S.ch[i]);
printf("\n");}
}
void main()
{int m,n,pos;
SqString S,T,sub;
printf("Please input S");
StrAssign(S);
print(S);
printf("Please input T");
StrAssign(T);
print(T);
m=StrCompare(S,T);
printf("%d",m);
n=StrLength(S)
printf("%d",m);
concat (S,T);
print(S);
printf("Please input pos= ,length= \n");
scanf("%d%d",&pos,&length);
SubString (&sub,S,pos,length);
print(sub);
getch();
}
特别是concat函数,编译错误特别多,不知道怎么回事?
谢谢啦。。。 展开
1个回答
展开全部
//给你改到可以运行了,你要实现什么功能你也没说,就这样了,你自己看看自己的算法,你在用的时候注意下大小写,在C 中是严格区分大小写的,还有就是函数在进行参数传递的时候,传的是什么。怎样传好,如果对修改有不解的地方,我们可以共同解决。
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define MAX 100
#define FALSE 0
#define TRUE 1
#define ERROR 0
typedef struct
{
char ch[MAX];
int len;
}SqString;
void StrAssign(SqString *str )//你这定义的是*str所以下面要用str->
{
int i;char cstr[MAX];
gets(cstr);///先接收串,再对其操作
for(i=0;cstr[i]!='\0';i++)
{
str->ch[i]=cstr[i];
}
str->len=i;
}
int StrCompare(SqString S,SqString T)
{
int i;
for (i = 0; i <S.len&&i < T.len; i++)
if (S.ch[i]!=T.ch[i])
return S.ch[i]-T.ch[i];
return (S.len-T.len);
}
int StrLength(SqString S)
{
return S.len;
}
int concat(SqString S,SqString T)
{ int i,overflow;
if (S.len+T.len<=MAX)
{
for(i=0;i<=T.len;i++)
S.ch[S.len+i]=T.ch[i];////引用的是S中的ch中的S.len+i
S.len=S.len+T.len; overflow=FALSE;
}
else {
overflow=TRUE;
if(S.len<MAX)
for(i=0;i<MAX-S.len;i++)
S.ch[S.len+i]=T.ch[i];
}
return overflow;
}
void Sqstring(SqString* sub,SqString *s,int pos,int length )///
{ int i;
if(pos<1 || pos>s->len || s->len<0 || length+pos-1 >s->len)
exit(0);
else
{ for(i=0;i<=length;i++)
sub->ch[i]=s->ch[pos+i];
sub->len=length;
}
}
void Print(SqString *S)
{int i;
if(S->len>0)
{for(i=0;i<S->len;i++)
printf("%c",S->ch[i]);
printf("\n");}
}
void main()
{
int m,n,pos,length;
SqString S,T,sub;
printf("Please input S :");
StrAssign(&S);
Print(&S);
printf("Please input T :");
StrAssign(&T);
Print(&T);
m=StrCompare(S,T);
printf("%d\n",m);
n=StrLength(S);
printf("%d\n",n);
concat (S,T);
Print(&S);
printf("Please input pos= length= \n");
scanf("%d%d",&pos,&length);
Sqstring(&sub,&S,pos,length);
Print(&sub);
getch();
}
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define MAX 100
#define FALSE 0
#define TRUE 1
#define ERROR 0
typedef struct
{
char ch[MAX];
int len;
}SqString;
void StrAssign(SqString *str )//你这定义的是*str所以下面要用str->
{
int i;char cstr[MAX];
gets(cstr);///先接收串,再对其操作
for(i=0;cstr[i]!='\0';i++)
{
str->ch[i]=cstr[i];
}
str->len=i;
}
int StrCompare(SqString S,SqString T)
{
int i;
for (i = 0; i <S.len&&i < T.len; i++)
if (S.ch[i]!=T.ch[i])
return S.ch[i]-T.ch[i];
return (S.len-T.len);
}
int StrLength(SqString S)
{
return S.len;
}
int concat(SqString S,SqString T)
{ int i,overflow;
if (S.len+T.len<=MAX)
{
for(i=0;i<=T.len;i++)
S.ch[S.len+i]=T.ch[i];////引用的是S中的ch中的S.len+i
S.len=S.len+T.len; overflow=FALSE;
}
else {
overflow=TRUE;
if(S.len<MAX)
for(i=0;i<MAX-S.len;i++)
S.ch[S.len+i]=T.ch[i];
}
return overflow;
}
void Sqstring(SqString* sub,SqString *s,int pos,int length )///
{ int i;
if(pos<1 || pos>s->len || s->len<0 || length+pos-1 >s->len)
exit(0);
else
{ for(i=0;i<=length;i++)
sub->ch[i]=s->ch[pos+i];
sub->len=length;
}
}
void Print(SqString *S)
{int i;
if(S->len>0)
{for(i=0;i<S->len;i++)
printf("%c",S->ch[i]);
printf("\n");}
}
void main()
{
int m,n,pos,length;
SqString S,T,sub;
printf("Please input S :");
StrAssign(&S);
Print(&S);
printf("Please input T :");
StrAssign(&T);
Print(&T);
m=StrCompare(S,T);
printf("%d\n",m);
n=StrLength(S);
printf("%d\n",n);
concat (S,T);
Print(&S);
printf("Please input pos= length= \n");
scanf("%d%d",&pos,&length);
Sqstring(&sub,&S,pos,length);
Print(&sub);
getch();
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询