C语言编程去掉首尾*的问题,字符中间*不去掉

[复制链接]
查看11 | 回复4 | 2017-12-14 21:54:02 | 显示全部楼层 |阅读模式
h是从左至右数第一个不是*的字符,那么a[j]=a[h+j];就是当j==0时把第一个不是*的字符拷贝到a[0],j++;后j成了1,就是把从左数第一个不是*的字符后面的字符(有可能也是*)拷贝到a[1]……就这样一直拷下去,直到j刚好<len-h-e是为止——len是整个字符串的长度,h是前面的*的个数,e是后面的*的个数,那么len-h-e就是去掉前后*的字符个数,显然while(j<len-h-e)这个循环就把中间那些字符移到从a[0]开始的最前面了,然后由a[j]=0;在后面添加一个结束符,就完成删除任务了!...
回复

使用道具 举报

千问 | 2017-12-14 21:54:02 | 显示全部楼层
前导*后的每个字符都往前移动 h 位,等于把前面的*都用后面的字符覆盖掉。这样就把前面的*去掉了j只是个循环变量,比如 h=3 a[]="***123**"会变成a[]="123"这是都向前移动了ha[0]=a[0+3];a[1]=a[1+3];a[2]=a[2+3];...
回复

使用道具 举报

千问 | 2017-12-14 21:54:02 | 显示全部楼层
a[j]=a[h+j];就是前导*后的每个字符都往前移动一位,,因为H是前导* 的位置,所以要加上h...
回复

使用道具 举报

千问 | 2017-12-14 21:54:02 | 显示全部楼层
不懂...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行