使用指针复制产生错误不知道为何

问题遇到的现象和发生背景

//就是整形数组的第一个值输出有错误

问题相关代码,请勿粘贴截图
#include<stdio.h>
int main()
{
    int a[5],*p=a;
    char b[5],*p1=b;//指针的声明与初始化
    int i;
    for(i=0;i<5;i++)
        scanf("%d",p+i);
    getchar();
    gets(p1);
    for(i=0;i<5;i++)
        printf("%d\n",a[i]);
    printf("%s\n",p1);
    for(i=0;i<5;i++)
        printf("%c\n",*(p1+i));
    return 0;

}
运行结果及报错内容

img

我的解答思路和尝试过的方法
我想要达到的结果

我测试输出正常啊
有一个问题是b数组太小了,输入abcde会越界的,改成b[10]试试