你问题说的不清楚,看你这个贴的代码,你是想给字符串每个中文字中间添加空格再打印。你的问题是s数组初始只有7字符大小(一个中文占2字符,最后还有一个结束符号0)。
但你在循环那里上限1000,越界了。
按照你的写法改,循环上限要参照s长度,传值给n,每次要传2个字符再插空格。

#include <stdio.h>
#include <string.h>
int main()
{
long i,j=0,len;
char s[]={"红黄绿青蓝紫"};
len=strlen(s);
char n[1000000]={"\0"};
for(i=0;i<len;i++)
{
n[j++]= s[i++];
n[j++]= s[i];
n[j++]=' ';
}
n[j++]='\0';
printf("输出结果:\n%s", n);
}