C语言程序,为什么会提示void StrAssign下面缺少分号?

部分代码如下,可以的话再帮忙看看有没有其它错误?#include<stdio.h>#include<malloc.h>typedefintStatus;typedefst... 部分代码如下,可以的话再帮忙看看有没有其它错误?
#include <stdio.h>
#include <malloc.h>
typedef int Status ;
typedef struct {
char *ch ;//若是非空串,则按串长分配存储区,否则ch = NUll;
int length ;//串长度
}HString ;
//基本操作(HString.cpp)
int Index(HString A,HString B,int pos){
//返回子串B在主串A中的第pos个字符之后的位置,若不存在,则函数值为0.
//其中,B非空,1<=pos<=StrLength(A) .
int i = pos-1 ;int j = 0;
while(i<A.length && j<B.length){
if(A.ch[i] == B.ch[j]){++i ;++j;}
else{i=i-j+1;j = 0;}
if(j>=B.length) return i-B.length+1 ;
else return 0 ;
}//Index
void StrAssign(HString &B,char *chars)
{
int len =0;
for(char*c=chars;*c!='\0';c++)
len++;
if(!len)
{
B.ch=NULL;
B.length=0;
}
B.ch=(char*)malloc(sizeof(char)*len);
for(int i=0;i<len;i++)
*(B.ch+i)=chars[i];
B.length=len;
}
展开
 我来答
mio_chat
2013-12-02
知道答主
回答量:5
采纳率:0%
帮助的人:5.1万
展开全部

因为你int Index(HString A,HString B,int pos)这个函数里面的

while(i<A.length && j<B.length){
if(A.ch[i] == B.ch[j]){++i ;++j;}
else{i=i-j+1;j = 0;}


有问题。
你的else行最后漏了个“}”,,应该是

while(i<A.length && j<B.length){
if(A.ch[i] == B.ch[j]){++i ;++j;}
else{i=i-j+1;j = 0;}}
caodd_2010
2013-12-01 · TA获得超过110个赞
知道小有建树答主
回答量:107
采纳率:0%
帮助的人:122万
展开全部
可能是 for(char*c=chars;*c!='\0';c++)这里,char *c先在前面定义,c不支持这样定义
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式