遇到buffer!=nullptr的问题

遇到的写入文件和读入文件时出现空指针的问题

struct man* scanpassenger(FILE* pass)
{
    struct man* p, * q, * head;
    head = NULL;
    q = NULL;
    getchar();
    printf("请依次输入航班号,姓名,身份证,订票数量\n输入完之后想再输入扣个1,不想输入扣个0\n");
    int flag = 1;
    while (flag)
    {
        p = (struct man*)malloc(sizeof(struct man));
        p->next = NULL;//置当前的指针域为空
        scanf("%s%s%s%d", p->num, p->name, p->shen, &p->sum);//输入这个节点的数据域
        if (head == NULL)
        {
            head = p;
        }
        else q->next = p;//让该节点置于链表最后
        q = p;//让当前的结点作为过渡结点
        fwrite(p->num, sizeof(char), 20, pass);//将我输入的结点输入到文件中
        fwrite(p->name, sizeof(char), 10, pass);
        fwrite(p->shen, sizeof(char), 8, pass);
        fwrite(&p->sum, sizeof(int),1 , pass);
        fwrite(p->next, sizeof(struct man*), 1, pass);
        scanf("%d", &flag);
    }
    p = head;
    fseek(pass, 0, 0);//将文件的指针指向开头
    fclose(pass);
    return head;


![img](

我的解答思路和尝https://img-mid.csdnimg.cn/release/static/image/mid/ask/378407825936134.png "#left")

在读入文件时出现空指针的问题是由于对文件的了解和使用出现问题,希望优秀的程序员们予以指导,非常感谢!

首先确定pass文件是否以可写状态打开,其次确定要写入文件的这些变量是否存在