引用指向不完整类型的指针
fscanf(fp,"%d\t%s\t%d\t%d\t\n",&p->number,p->name,&p->shelf.life,&p->storage);
你是没给他分配内存吗?