一道C语言编程题目的问题

#include<stdio.h>#include<string.h>voidstring_cut(charstring[],charc){inti,j;for(i=0;... #include<stdio.h>
#include<string.h>
void string_cut(char string[],char c)
{
int i,j;
for(i=0;string[i]!='\0';i++)
{if(string[i]==c)
{for(j=i;string[j]!='\0';j++)
string[j]=string[j+1];}
}
}
main()
{char c;
char a[30];
gets(a);
c=getchar();
string_cut(a,c);
printf("%s",a);
}

如果我输入cbcacd
去掉字母C
出来就是正确答案,
但是当我输入ccbccaccd或者cccbcccacccd时
他总会保留1个c 变成cbcacd
虽然题目要求我做到了,但是我不知道为什么多打1个或几个字母的时候会出现错误
展开
 我来答
huifeng00
2009-12-23 · TA获得超过5235个赞
知道大有可为答主
回答量:808
采纳率:0%
帮助的人:815万
展开全部
#include<stdio.h>
#include<string.h>
void string_cut(char string[],char c)
{
int i,j;
for(i=0;string[i]!='\0';i++)
{if(string[i]==c)
{
for(j=i;string[j]!='\0';j++)
string[j]=string[j+1];
i--;
}
}
}
main()
{char c;
char a[30];
gets(a);
c=getchar();
string_cut(a,c);
printf("%s",a);
}
如上在你的
for(i=0;string[i]!='\0';i++)
{if(string[i]==c)
{for(j=i;string[j]!='\0';j++)
string[j]=string[j+1];}
}
里面添加个i--就可以了。
原因是因为,你删除了一个字符c.然后你所有c后面的字符都向前移动了一位,所以
i位置可能还是c,因为你后面向前移动了一位,如果,你不i--.它会执行i++,所以就把这个后移可能为c的字符给跳过去了,没有检查,所以加山个i--,然后,在i++,这样i没有前进,会继续下次检查你向前移动i的字符。
匿名用户
2009-12-23
展开全部
for(i=0;string[i]!='\0';i++)
{
if(string[i]==c)
{
for(j=i;string[j]!='\0';j++)
string[j]=string[j+1];
i=0;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式