看下这个那里错了

来源:百度知道 编辑:UC知道 时间:2024/06/28 09:49:33
void fun( char *a )
{ int i,j,k;
for(i=0;1;i++)
if(a[i]!=*) break;
for(j=i;a[j]!=0;j++)
if(a[j]==*)
for(k=j;a[j]!=0;k++)
a[j]=a[j+1];
}
函数的功能是 除了字符串前面的*号之外,将串中其他*号全部删除

不知道你向实现什么我来初步检测:
void fun( char *a ) //你定义的形参
{ int i,j,k;
for(i=0;1;i++) //这里系统虽然没有报错但你明显错了 for(i=0;i<1;i++)或是其他什么形式。
if(a[i]!=*) break; //这里你错了你没用写上参数!~因此需要这样if(a[i]!=*a) break;
for(j=i;a[j]!=0;j++)
if(a[j]==*) // 同理这里也是if(a[j]==*a)
for(k=j;a[j]!=0;k++)
a[j]=a[j+1];
}
这样运行就没有什么很明显的错误

if(a[i]!=*) break;不对吧
至少是
if(a[i]!='*') break;

if(a[j]==*) 应该也是if(a[j]=='*')吧

只用加一对括号就行了:
void fun( char *a )
{
int i,j,k;
for(i=0;1;i++)
{
if(a[i]!=*) break;
for(j=i;a[j]!=0;j++)
if(a[j]==*)
for(k=j;a[j]!=0;k++)
a[j]=a[j+1];
}
}

如果循环体有两句话以上,就要加 {}