为什么当我输入超过20个字符时,不会显示烫的错误呢?不是已经超出我定义的字符数组长度了吗

为什么当我输入超过20个字符时,不会显示烫的错误呢?不是已经超出我定义的字符数组长度了吗
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
这是程序是用来给输入的字符串每两个字符之间相隔一个空格用的。
#include<stdio.h>
int main()
{
 char *insert(char *s1,char *s2);
 char string1[20],string2[60];
 char *s1=string1,*s2=string2;
 printf("input zifuchuan\n");
 gets(s1);
 puts(insert(s1,s2));
 return 0;
}
char *insert(char *s1,char *s2)
{
 int i;
 for(i=0;*(s1+i)!='\0';i++)
 {
  if(*(s1+i+1)!='\0')
  *(s2+2*i+1)=' ';
  else *(s2+2*i+1)='\0';
  *(s2+2*i)=*(s1+i);
  
 }
 return(s2);
}

是因为内存地址是顺序分配的,所以,字符串指针一样可以指向超出字符数组长度的数据,但是这样的数据是没有保证的,不建议使用