问题一:删除str中值为ch的所有字符
图片是书中的代码,下面是我按照书中敲出来的代码
是用定长顺序存储。
#include
#define maxsize 20
typedef struct
{
char ch[maxsize];
int length;
}Str2;
void main()
{
void de13(Str2 & str,char ch);
Str2 stra={"abidcef",8};
de13(stra,'a');
}
void de13(Str2 & str,char ch)
{
if(str.length!=0)
{
int num = 0;
int i,j;
i=0;
while(str.ch[i]!='\0')
{
if(str.ch[i]==ch)
{
++num;
for(j=i+1;str.ch[j]!=ch && str.ch[j]!='\0';++j)
str.ch[j-num]=str.ch[j];
i=j;
--str.length;
}
else
++i;
}
str.ch[str.length]='\0';
}
for(int i=0;i<str.length;i++)
{
printf("%c",str.ch[i]);
}
printf("\n");
}
运行有结果也确实不正确,我感觉是因为那个--str.length错了,是这样吗?。。还是说是我敲错了?
问题2:使用变长分配存储定义一个串,然后删除下标 i 的字符,不可以直接用str.ch[i]=str.ch[i+1];然后循环这样直接覆盖吗?