请问我的代码哪里出错了吗,为什么输入后没有输出值?

输入字符串中包含字母和星号,编写一个函数fun使得除了字符串前导的星号之外,将串中其他星号删除,不得使用c语言提供的字符串函数。
如字符串内容为 * * * A * BC * DEF 输出为 * * * ABCDEF
请问我的代码哪里出错了吗,为什么输入后没有输出值?


```c
#include <stdio.h>
void fun(char a[],int m)
{
    int i,j;
    for(i=0;a[i]=='*'&&i<m;i++);
    for(j=i;j<m;)
    {
    while(a[j]!='*')
    j++;
    while(a[j]=='*')
    a[j]='\0';
    j++;
    }
    for(j=0;j<22;j++)
    printf("%c",a[j]);
}
int main()
{
    int m,n;
    char a[22];
    for(n=0;n<22;n++)
    {
    scanf("%c",a[n]);
    if(a[n]=='\n') break;}
    m=22;
    fun(a[22],m);
    return 0; 
}

```