void fun( char *a )
{
int i,j=0;
for(i=0;a[i]!='\0';i++)
if(a[i]!='*')
a[j++]=a[i];
a[j]='\0';
}
这是第一种,可以运行。但我用while函数却不行,按回车什么都没有。
void fun( char *a )
{
int i,j=0;
while(a[i]!='\0')
if(a[i]!='*')
a[j]=a[i];
j++;
i++;
a[j]='\0';
}
希望各位大神帮忙解决一下问题!
char a 是 C 中的 char 类型指针,这意味着它可以存储字符或字符数组的地址。在您的第一个函数中,您使用 for 循环遍历 a 中的字符,并将它们复制到另一个位置(如果它们不是 '')。在您的第二个函数中,您使用 while 循环做同样的事情,但有两个问题:
您在使用它作为 while 条件之前没有初始化 i。这意味着 i 可能有任何随机值,并导致未定义行为。
您没有在 if 块内递增 j 和 i。这意味着您总是将 a[i] 复制到 a[0] 并且永远不会向前移动。
要修复您的第二个函数,您需要做类似于以下操作:
void fun( char a ) { int i=0,j=0; // 初始化 i while(a[i]!=‘\0’) { if(a[i]!='‘) { a[j]=a[i]; j++; // 递增 j } i++; // 递增 i } a[j]=’\0’; }
void fun( char *a )
{
int i=0,j=0;
while(a[i]!='\0')
{if(a[i]!='*')
a[j++]=a[i];
i++; }
a[j]='\0';
}