C语言数组删除字符后输出

#include <stdio.h>
int main()
{
char c[10];
int i=0,j=0;
gets(c);
while(c[j]!='\0')
{
if(c[i]!='a')c[j++]=c[i];i++;
}
puts(c);
return 0;
}
#include <stdio.h>
int main()
{
char c[10];
int i=0,j=0;
gets(c);
for(;c[i];i++)
{
if(c[i]!='a')c[j++]=c[i];c[j]=0;
}
puts(c);
return 0;
}
哪个大佬告知这两个的不同和数组赋值后为什么会变化

第二段应该将c[j]=0放到for循环外面才行
两段实现的逻辑基本一样,就是逐个检查字符串字符,如果不是'a',则存储到数组从0开始的位置。然后把最后一个移动的非'a'字符后的元素改为字符串结束符就完成了字符串删除'a'的操作

你确定你写的这两个代码是对的吗,我咋觉得你第二个代码写错了,for语句不是这么写的