算法问题(问题如图),有一个测试点出现错误,请问代码哪里有问题

img

#include<stdio.h>
int main()
{
    char ch[1000];
    int n=0,i,j,k,w;
    for(w=0;w<1000;w++)
    {
        scanf("%c",&ch[w]);
        if(ch[w]=='\n') break;
    }
    ch[w]='\0';
    for(i=0;i<w;i++)
    {
        if(ch[i]=='6')
        {
            for(j=i;j<1000;j++)
            {
                if(ch[j]!='6')
                {
                    if(n>3&&n<=9) printf("9");
                    if(n>9) printf("27");
                    if(n<=3)
                    {
                        for(k=0;k<n;k++)
                            printf("6");
                    }
                    i=j;
                    if(j!=w) printf("%c",ch[j]);
                    break;
                }
                n++;
            }
        }
        else printf("%c",ch[i]);
        n=0;
    }
return 0;
}

数组开大点试试,可能正好卡在1000个元素,然后ch[m]=‘\0’这里就越界了