关于C语言长除法子函数的返回值问题

这是我写的长除法子函数,在返回数组到主函数时,打印返回的数组出了问题,
本应该打印63个数的,可是打印停不下来,检查好几次后,发现ikk取值范围有问题,

--在ikk<8时,ikk最多到7,正常出8个数,但ikk<9时,便会无限循环那8个数


#include<stdio.h>
#include<stdlib.h>
#define N 8
#define M 63
int *CC(int j[],int f[]){
    int n=0,i=0;
    int s[N]={0},m[M]={0};
    for(i=0;i<N;i++)
    s[i]=j[i];
    for(i=0;i<M;i++)
    {
        if(s[0]==1)
        {
            m[i]=1;
            for(int n=0;n<N;n++)
                s[n]=s[n]^f[n];
        }
        else
            m[i]=0;
        for(n=0;n<N;n++)
            s[n]=s[n+1];
        s[N-1]=0;

    }
    return m;
}

    void main(){
        int ikk;
        int a[N],m1[M];
        int f1[8]={1,0,0,0,1,0,0,1};
        int g1[8]={1,0,0,0,1,0,0,0};
        CC(g1,f1);
        for(ikk=0;ikk<8;ikk++)////////在这里,在ikk<8时,ikk最多到7,正常出8个数,但ikk<9时,便会无限循环那8个数
        {
        a[ikk]=*(CC(g1,f1)+ikk);
        printf("%d",a[ikk]);
        }
        printf("\n");
        system("pause");
    }

输出结果:
ikk<8时
图片说明
ikk<9时
图片说明

学长 问题解决了没有