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;
} 展开
#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;
} 展开
2个回答
展开全部
因为你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;}}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询