肚子饿了233 发表于 2021-3-19 14:23:46

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

void fun4(char* p4)
{
        int i, j, k=0;
        for (i = 0; p4; i++);   //i用来计算字符串里的字符个数
        for(j=0;p4!='*';j++)   p4 = p4;
        p4 = '\0';
        for (i = 0; i<k; i++)
                cout << p4;
}



次代码的目的是消除字符串里所有星星,如****asd***as**变为asdas,可是我为啥运行不出来结果呀?

编译器直接显示按任意键退出程序,明明结果都没显示!

jackz007 发表于 2021-3-19 14:52:56

本帖最后由 jackz007 于 2021-3-19 14:57 编辑

      这一句要不得
      for(j=0;p4!='*';j++)   p4 = p4;
      它会在 p4 是 '*' 字符时终止循环,如果字符串以 '*' 字符为先导,那么,这个语句就不会对 p4 做出任何改变。
void fun4(char * p4)
{
      int i , j                                                       ;
      for(i = j = 0 ; p4 ; i ++) if(p4 != '*') p4 = p4 ;
      p4 = '\0'                                                    ;
}

肚子饿了233 发表于 2021-3-19 18:24:46

jackz007 发表于 2021-3-19 14:52
这一句要不得

      它会在 p4 是 '*' 字符时终止循环,如果字符串以 '*' 字符为先导,那 ...

谢谢你,原来我还是语法规则没弄明白。我得回去好好复习一下了。
页: [1]
查看完整版本: 请大佬帮忙检查下这段代码2!!!