|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
问题一:删除str中值为ch的所有字符
图片是书中的代码,下面是我按照书中敲出来的代码
是用定长顺序存储。
#include<stdio.h>
#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];然后循环这样直接覆盖吗?
本帖最后由 程序员的救赎 于 2018-9-2 20:47 编辑
问题一,你的长度应该是7不是8。。。(坑啊,我看了好久没发现),下次不要手动传长度。
问题二, 可以,而且就是这么做的,注意不要越界。
|
|