为什么最后无法打印出插入后的数组

#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include

int list(int a[], int i, int e);
int main()
{
int m = 0;
int a[10] = { 1,2,3,4,5,6 };
list(a, 3, 8);
for (m = 0; m < 10; m++)
{
printf("%d",a[m]);
}
return 0;
}
int list(int a[], int i, int e)
{
int j = 0, m = 0;
int t, k;
while (a[j] != 0)
{
j = j + 1;
}
t = j;
for (k = j; k >= i - 1; j--)
{
a[k + 1] = a[k];
}
a[i - 1] = e;
return 0;
}

为什么最后无法打印出插入后的数组

for (k = j; k >= i - 1; j--)
{
a[k + 1] = a[k];
}死循环

for (k = j; k >= i - 1; j--)
这应该是
for (k = j; k >= i - 1;k--) 吧

while (a[j] != 0)
{
    j = j + 1;
}

这个a[j]是不会等于0的,这里有可能是一个死循环