明明只向数组中储存了四个数据:2,2,5,5,但是数组总会多显示一个任意的乱数据

这是一个求质因数的小代码,但是输出的时候总是会多一个


#include<stdio.h>

int main()
{
    int m,i=2,j=0,factor[20];
    printf("请输入一个正整数\n"); 
    scanf("%d",&m);
    
    while(m>1)            //求质因数,并将其储存到factor数组中 
    {
        if(m%i==0)
        {
            factor[j]=i;
            j++;
            m=m/i;
        }
        else i++;
    }
    
    for(i=0;factor[i]!='\0';i++) //输出数组中所有质因数 
    {
        printf("%d ",factor[i]);
    }
} 

运行结果应该是:2,2,5,5
但实际运行结果总是多一个数据,那个数据还是随机的:

img

factor[i]!='\0' 改成 i<j不就好了