请大佬帮忙检查下这段代码!!!
void fun1(char* p1)// p1[]={*****add***cc**}{
int i, j, m;
for (i = 0; p1; i++); //i用来遍历数组p1里的所有字符,即计数
for (j = 0; p1 == '*' && j < i; j++);
for (m = 0; j < i; j++)
{
p1 = p1;
cout << p1;
}
}
这是一个子函数,功能是消灭*****add***cc**的头部星星,其余字符保留。
但是我的代码运行出来的结果却只消灭了一个星星,应该消灭头部的5个星星,这是为啥呢?
(我用的是vs2019) void fun1(char * p1)// p1[]={*****add***cc**}
{
int i , j ;
for(i = 0 ; p1 && p1 == '*' ; i ++) ;
for(j = i ; p1 ; j ++) p1 = p1 ;
p1 = '\0' ;
} jackz007 发表于 2021-3-19 14:46
谢谢你写的新代码!我知道我哪里错了,第三个for循环里应该是j<=i;因为要将结束字符传入新数组。可是结束字符不是编译器自动在末尾加上的吗?如果没有结束字符,为啥会出现只消掉了一个星星的情况了呢?这种情况是随机的吗? jackz007 发表于 2021-3-19 14:46
诶?您把您刚刚的回复删了吗?我咋看不见了呢?
页:
[1]