没有报错,但一运行就崩。

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

编译没有发生错误但一运行程序就崩了,为什么呢?

问题相关代码,请勿粘贴截图
#include<stdio.h>
struct book{
    char book_name;
    char book_date;
    char writer;
}book1[]={
};
int main(){
    int i=0;
    scanf("%s",book1[i].book_name);
    scanf("%s",book1[i].book_date);
    scanf("%s",book1[i].writer);

    return 0;
} 

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

img

#include<stdio.h>
struct book{
    char book_name[1000];
    char book_date[1000];
    char writer[1000];
}book1[]={
};
int main(){
    int i=0;
    scanf("%s",&book1[i].book_name);
    scanf("%s",&book1[i].book_date);
    scanf("%s",&book1[i].writer);
 
    return 0;
} 
 

记得要加&,该数组