鱼C论坛

 找回密码
 立即注册
查看: 2203|回复: 3

请大佬帮忙检查下这段代码!!!

[复制链接]
发表于 2021-3-19 14:19:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
void fun1(char* p1)  //   p1[]={*****add***cc**}
{
        int i, j, m;
        for (i = 0; p1[i]; i++);   //i用来遍历数组p1里的所有字符,即计数
        for (j = 0; p1[j] == '*' && j < i; j++);
        for (m = 0; j < i; j++)
        {
                p1[m++] = p1[j];
                cout << p1[m];
        }
}

这是一个子函数,功能是消灭*****add***cc**的头部星星,其余字符保留。
但是我的代码运行出来的结果却只消灭了一个星星,应该消灭头部的5个星星,这是为啥呢?
(我用的是vs2019)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-3-19 14:46:10 | 显示全部楼层
void fun1(char * p1)  //   p1[]={*****add***cc**}
{
        int i , j                                   ;
        for(i = 0 ; p1[i] && p1[i] == '*' ; i ++)   ;
        for(j = i ; p1[j] ; j ++) p1[j - i] = p1[j] ;
        p1[j - i] = '\0'                            ;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-19 18:40:44 | 显示全部楼层

谢谢你写的新代码!我知道我哪里错了,第三个for循环里应该是j<=i;因为要将结束字符传入新数组。可是结束字符不是编译器自动在末尾加上的吗?如果没有结束字符,为啥会出现只消掉了一个星星的情况了呢?这种情况是随机的吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-19 19:16:20 | 显示全部楼层

诶?您把您刚刚的回复删了吗?我咋看不见了呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-13 20:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表