日出259 2022-11-02 21:13 采纳率: 54.5%
浏览 11
已结题

完成串的替换过程中主函数出现错误了

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define MAX_STRLEN 256
#define OK 1;
#define ERROR -1;

typedef struct{
char str[MAX_STRLEN];int length;
}
StringType;

typedef int Status;
typedef struct
{ char *ch;
int length;
int pos;
int i;
}HString;

char *p,*q;
Status HString_Delete(HString &S,int i){
char *p,*q;
p=&(S.ch[i-1]);
q=S.ch+S.length-1;
for(++p;p<=q;++p)
*(p-1)=*p;
--S.length;
return OK;
}

Status HString_Insert(HString &S,int i,int e){
//在顺序线性表L中第i个位置之前插入新的元素e,
//i的合法值为1<=i<=ListLength_Sq(L)+1
char *p,*q; //定义指针

q = &(S.ch[i-1]); //q为插入位置
for(p = &(S.ch[S.length-1]);p>=q;--p)
*(p+1) = *p; //插入位置及之后的元素右移
*q = e;//插入e
++S.length; //表长增加1
return OK;
}//ListInsert_Sq

int IndexString(HString &S,HString T,int pos)
//采用顺序存储方式存储主串S和模式T
//若模式T在主串S中从第pos位置开始有匹配的子串
//返回位置,否则返回-1
{char*p,*q;
int k,j;
k=pos-1;j=0;p=S.ch+pos-1;q=T.ch;
//初始匹配位置设置
//顺序存放时第pos位置的下标值为pos-1
while((k<S.length)&&(j<T.length))
{ if(*p==*q){p++;q++;k++;j++;}
else{k=k-j+1;j=0;q=T.ch;p=S.ch+k;} //重新设置匹配位置

}

if(j==T.length)
return(k-T.length); //匹配,返回位置
else return(-1); //不匹配,返回-1
}

Status Replace(HString &S,HString T,HString Sub)
{
char*p,*q;
int pos=0;
int i;
pos=IndexString(S,T,pos);
while(pos!=-1){
pos=IndexString(S,T,pos);
if(T.length=Sub.length){
for(i=0;i<Sub.length;i++)
S.ch[pos+i]=Sub.ch[i];
}
else if(T.length>Sub.length){
for(i=0;i<T.length-Sub.length;i++)
HString_Delete(S,pos+Sub.length+i);
}

else{
int differ;
for(i=0;i<T.length;i++)
S.ch[pos+i]=Sub.ch[i];
differ=Sub.length-T.length;
for(i=0;i<differ;i++)
HString_Insert(S,pos+T.length+i,Sub.ch[differ+i-1]);
}
return OK;
}

void main()
{
StringType S,T,Sub;

   char a[100]="acdesaadfeda";
char b[]="a";
char c[]="??";
int len=strlen(a);

S.ch=a;
S.length=strlen(a);
T.str=b;
T.length=strlen(b);
Sub.str=c;
Sub.length=strlen(c);
printf("-----beging-----\n");
Replace(&S,T,Sub);
printf("----end-----\n");
printf("%s\n",S.ch);

}

报错问题为:[Error] a function-definition is not allowed here before '{' token
请问这是什么意思

  • 写回答

1条回答 默认 最新

  • 伍六七0804 2022-11-03 09:51
    关注

    Status Replace(HString &S, HString T, HString Sub)这个函数最后面少了一个}

    本回答被专家选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月13日
  • 专家已采纳回答 11月5日
  • 创建了问题 11月2日

悬赏问题

  • ¥30 STM32 INMP441无法读取数据
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境