运行读取文件中内容的函数时总是直接结束程序

img


有没有人帮忙看看的,自己搞了半天都没明白,身边没人可以问,感谢😭

函数参数 link 是链表头结点,修改如下,供参考:

void read(struct book * link)
{
    FILE *fp;
    fp = fopen("book.txt", "r");
    if (fp == NULL){
        printf("open file fail!\n");
        return;
    }
    struct book *p1 = link, *pnew = NULL;
    while (1){
        pnew = (struct book*)malloc(sizeof(struct book));
        pnew->next = NULL;
        if (fscanf(fp,"%d %s %s %s %d %d %d %ld\n",&pnew->ISBN, pnew->name,pnew->writer,
             pnew->press, &pnew->date[0], &pnew->date[1], &pnew->date[2], &pnew->price) != 8)
        {
            free(pnew);
            break;
        }
        p1->next = pnew;
        p1 = pnew;
    }
    fclose(fp);
    return;
}